我正在阅读'范围&'系列'你不知道JS'中的书'闭包',并且我看到函数首先被挂起,然后被挂起。 经历此代码段:词汇范围问题
function foo() {
var a = 2;
function bar() {
console.log(a); // 2
}
bar();
}
foo();
如果是这种情况下,应在函数bar()不被提升到顶部和此代码应产生错误?由于吊装后,此代码应该是这样的(至少我的理解)
function foo() {
function bar() {
console.log(a);
}
var a;
a = 2;
}
这是因为功能提升到顶部,后来变量。如果情况并非如此,请纠正我。
'console.log(a)'直到调用bar()时才会执行。它不会尝试访问'a'直到那个时候,所以'var a;'在任何尝试调用bar()之前都会被处理很久。 –