// 看代码输出
function outer() {
console.log(a);
var a = 1;
console.log(inner());
function inner() {
return a;
}
}
输出:undefined 1
上述代码,函数、变量声明都被提升,函数优先级更高,相当于执行下面的代码:
function outer() {
function inner() {
return a;
}
var a;
console.log(a);
a = 1;
console.log(inner());
}
声明变量未赋值,会被赋予undefined,闭包的作用域包括父函数,父函数内声明了变量a,所以读取父函数内部的