Я пытаюсь понять подъем переменных JavaScript, и я путаюсь с документацией, указанной Mozilla.
Документация, на которую я ссылаюсь, находится здесь:
console.log(x === undefined); // true
var x = 3;
Я использую консоль разработчика в Google Chrome, чтобы протестировать этот код последней версии. Когда я выполняю приведенный выше код, я получаю false, когда в документации Mozilla указано, что он должен быть возвращен как true.
Этот вывод выше означает, что x определенно устанавливается в 3 до запуска console.log(). Эта документация, указанная Mozilla, неверна или я чего-то не понимаю?
Он вернет true
при первом запуске, потому что x
начинается с undefined
. После запуска var x = 3
, x
устанавливается в 3
, поэтому при следующем запуске сравнения console.log(x === undefined)
возвращается значение false
, поскольку x
больше не является undefined
.
я запускаю его в Mozilla и Chrome, и это правда: впервые ответ верен, потому что он не определен, но будет неверным в следующий раз. Ответ не меняется после очистки консоли, и вы должны перезапустить браузер.
eval
, который имеет другие правила.true
после первого.