Извините за этот вопрос, но эта проблема действительно испортила мой день.
Следующий код предупреждает 10 как следует:
var globalId='10';
function check(){
alert(globalId);
}
check();
Но это следующеепредупреждения о коде undefined :
var globalId='10';
function check(){
alert(globalId);
var globalId;
}
check();
Мне известно, что если я объявил переменную в функции как локальную переменную, но если я уже объявил ее как глобальную, как это может бытьВ моих предупреждениях указано: undefined ?
Это простой пример, но в моем исходном коде я много чего делал между началом функции, а затем прошел долгий путь вниз, чтобы проверитьпосмотрите, был ли определен globalId
, иначе определите его: if(!globalId){var globalId;}
Это означало, что мое оповещение, расположенное в верхней части функции, генерировало неопределенное, как будто JavaScript сначала выполнил всю функцию, просто чтобы увидеть, могут ли быть объявлены какие-либо переменные.и, если да, объявите их, и поэтому мое предупреждение указывало на необъявленную переменную.
Может кто-нибудь объяснить мне, почему это происходит, и если это правда, что JavaScript «предварительно объявляет» все переменные передпри выполнении функции, даже если переменные объявлены в условиях, которые даже не выполняются?