Тернарные операторы



  • Что-то не так в работе с тернарными операторами. Или они не поддерживаются?
    Такой код

            var response = http_client_content();
            var data = JSON.parse(response);
            log('data: ' + data);
            data ? BE.callbacks.apiRequestCallback(data) : log('Error parse JSON api response, ' + response);
    

    выводит в лог следующее
    [01:26:16] Поток №1 : data: [object Object]
    [01:26:16] Поток №1 : Error parse JSON api response, {}

    в последней строке кода должно выполниться BE.callbacks.apiRequestCallback(data), если data не null, false, или undefined
    Если сделать то же самое через if-else, то все работает



  • @blackhacker JSON.parse выкидывает исключение если парсинг не удался, так что лучше оформить код так

    var response = http_client_content();
    var data = null;
    try
    {
        data = JSON.parse(response);
        log('data: ' + data);
        BE.callbacks.apiRequestCallback(data)
    }catch(e)
    {
        log('Error parse JSON api response, ' + response);
    }
    

    Тернарный оператор работает, такой код

    var test = {a:"b"}
    log(test)
    test ? log(1) : log(2)
    

    выводит

    [17:37:48] Поток №1 : [object Object]
    [17:37:48] Поток №1 : 1
    

    а такой код

    var test = null
    log(test)
    test ? log(1) : log(2)
    
    [17:38:37] Поток №1 : 
    [17:38:37] Поток №1 : 2
    

Log in to reply