Узел JS, если условие не работает должным образом - PullRequest
0 голосов
/ 28 июня 2018

Я хочу инициализировать глобальную переменную с телом объекта json. Но в моем коде if не выполняется вместо if, else часть кода выполняется, если console.log(typeof ticker), я получаю неопределенное значение. В чем проблема?

var ticker;
request({
    method: 'POST',
    url: 'xyz'
}, (err, res, body) => {

    if (typeof ticker === undefined) {
        ticker = body;
    } else {

        console.log(ticker)
    }
})

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Ответ Марко выше является правильным ответом. Я обращаюсь к следующему утверждению и тому, как вы можете проверить это для себя:

если условие не работает должным образом

Вы можете использовать отладчик, чтобы понять вашу программу. Поскольку вы используете узел, вы можете проверить это прямо из командной строки.

  1. Поместите оператор debugger над строкой кода, которая вас интересует. Это устанавливает точку останова.
  2. пробег node inspect <filename>
  3. REPL открывается в командной оболочке, начиная со строки 1 вашего файла. Чтобы достичь точки останова, просто введите c или cont в командной строке

Вы сейчас здесь:

> 3 debugger
  4 if (typeof ticker === undefined) {
  5 ticker = body
debug> _
  1. Теперь вы можете запускать выражения прямо в REPL, чтобы увидеть, как узел будет оценивать их во время выполнения:

    debug> typeof ticker
    'undefined'               // aha, there's our programming error
     debug> typeof ticker === undefined
     false
     debug> typeof ticker === 'undefined'  // it works
     true
    
  2. Чтобы дополнительно проверить поток вашей программы, введите next в REPL, чтобы построчно увидеть, куда программа движется.

При желании вы можете использовать интерфейс chrome для отладки:

  • пробег node --inspect-brk <filename>
  • открыть хром до chrome://inspect
  • нажмите Open dedicated devTools for node

Интерфейс Chrome позволяет подсветить или навести курсор на переменные и выражения, чтобы увидеть их значение.

0 голосов
/ 28 июня 2018

Ваше состояние всегда будет оцениваться до false. typeof оператор возвращает string. Итак, ваше if условие должно быть:

typeof ticker === 'undefined'

или

 ticker === undefined
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...