hh5*_*188 3 javascript scope function
我执行这样的函数:
var a = 123;
function f() {
alert(a);
var a = 9;
}
f();
Run Code Online (Sandbox Code Playgroud)
结果是undefined
,为什么会这样?为什么不123
呢?
您的函数实际编译为:
function f() {
var a;
alert(a);
a = 9;
}
Run Code Online (Sandbox Code Playgroud)
因为可变吊装:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/var#var_hoisting
所以,你的功能redeclares a
与作为值的局部变量undefined
,alert
原来是这样,然后重新将其值设置9
.
在此时alert
,它的价值是undefined
因为吊装.