0
var x = 5;
function a() {
function b() {
console.log(x);
}
b();
var x = 6;
}
a();
В console.log(x)
, выход undefined
. Но если я изменяю,JS переменная область охвата
var x = 5;
function a() {
function b() {
console.log(x);
}
b();
x = 6; // remove `var`
}
a();
затем выход 5.
Почему такое поведение? Пожалуйста, объясните мне.
Per [* ECMA-262 *] (http://ecma-international.org/ecma-262/5.1/#sec-10.5) на этапе * 8 c ii *, переменные, созданные посредством объявления переменной, первоначально назначаются значение * undefined *, поэтому return * undefined * до тех пор, пока не будет присвоено какое-либо другое значение. – RobG