var foo = 1;
(function(){
console.log(foo);
var foo = 2;
console.log(foo);
})()
答案:输出 undefined 和 2。上面代码相当于:
var foo = 1;
(function(){var foo;
console.log(foo); //undefined
foo = 2;
console.log(foo); // 2;
})()
函数声明与变量声明会被 JavaScript 引擎隐式地提升到当前作用域的顶部,但是只提升名
称不会提升赋值部分。