Извините за этот вопрос, но эта проблема действительно испортила мне день.
Следующий код предупреждает 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;}
Это означало, что мое предупреждение, расположенное в верхней части функции, созданной undefined, как если бы JavaScript сначала выполнил всю функцию, просто чтобы увидеть, могут ли быть объявлены какие-либо переменные, и если да, объявить их, и, следовательно, мое предупреждение указывало на `` необъявленную '' переменную .
Может ли кто-нибудь объяснить мне, почему это происходит, и если это правда, что JavaScript «предварительно объявляет» все переменные перед выполнением функции, даже переменные, объявленные в условиях, которые даже не выполняются?