[英]var hoisting and scope availability
我们知道var
声明被提升但具有undefined
的值:
console.log(a); // undefined
var a = 2
function foo() {
console.log(a);
}
function bar() {
var a = 3;
foo();
}
var a = 2;
bar(); // 2
为什么它记录2
而不是undefined
?
为什么var a
的值在声明之前就变得神奇了?
您在初始化变量后调用bar()
,因此它不再是undefined
的。
看这个更简单的例子:
function foo() { console.log(a); } foo(); // a is not yet initialized, prints undefined var a = 2; foo(); // a is now initialized, prints 2
提升只是使变量声明可用(因此您不会收到“未定义变量”错误)。 初始化只是按正常顺序发生的赋值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.