a会打印出什么?
var a = 2;
function hoist() {
console.log(a);//undefined
var a = 1;
console.log(a);//1
}
hoist();
上面的代码等价于等价于下面 打印A的时候a只是声明未定义函数声明与变量声明会被 JavaScript 引擎隐式地提升到当前作用域的顶部,但是只提升名称不会提升赋值部分。 var a = 2;
function hoist() {
var a;
console.log(a);
a = 1;
console.log(a);
}