x = 1;
alert(x);
var y = function() {
alert(x);
var x = 2;
alert(x);
}
y();
Wynik alarmuje 3 jest: 1
, undefined
, 2
(Chrome 25)Dlaczego moja zmienna globalna jest zacieniona przed deklaracją lokalną?
Moje pytanie brzmi: dlaczego drugi alert jest niezdefiniowana? Dlaczego nie 1? Czy nie ma zmiennej globalnej x?
Ponieważ cień '' 'w swojej funkcji. Jest więc zmienna "x" o zakresie funkcji, która nie ma jeszcze przypisanej wartości, więc otrzymasz niezdefiniowanie. Dlatego zawsze zaleca się zadeklarowanie zmiennych na początku funkcji, ponieważ i tak zostanie to zrobione. Staraj się nie pomylić. – Chad