почему глобальная переменная javascript внутри функции показывает ошибку?

Как вы сказали, узел является асинхронным, и журнал «Test ...» выполняется до получения ответа от базы данных. Функция, которую вы передали в запросе, выполняется после получения ответа из базы данных.

0
задан Noder 19 January 2019 в 14:44
поделиться

2 ответа

По умолчанию переменные в js являются глобальными, поэтому, если вы напишите что-то вроде:

let i = 30

в вашей функции, она будет локальной

0
ответ дан Guseyn Ismayylov 19 January 2019 в 14:44
поделиться

Представьте, что вы - движок JavaScript, читающий этот код сверху вниз:

  1. Первое, что мы прочитали, - это функция numPrinter. () нет, поэтому numPrinter только определяется, но не вызывается.
  2. Продолжая вниз, читаем первый console.log(i);. Вызов этого здесь приводит к ReferenceError: i is not defined, потому что numPrinter все еще НЕ был вызван, поэтому к i еще нельзя получить доступ.
  3. Далее, мы встречаемся с numPrinter();. Здесь JS-движок считывает () и вызывает функцию numPrinter. Теперь у нас есть доступ к i, потому что необъявленные переменные всегда становятся глобальными переменными.
  4. Наконец, второй console.log(i); считывается и печатает результат 30, потому что i доступен глобально вне функции numPrinter.
0
ответ дан underthecode 19 January 2019 в 14:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: