console.log(a); // 输出什么? //报错
{
let a = 1;
}
console.log(a); // 输出什么? //undefined
{
var a = 1;
}
console.log(a); // 输出什么? //报错 立即执行函数--闭包
(function() { var a = 1; })();
4.只有函数时声明,函数提升到最顶部,函数字面量式声明不会,只会提升对应的字段名-undefined。如果是let定义则不会提升
1.
var a = 1;
function foo() {
console.log(a);
var a = function() {}
}
foo(); // 输出什么? undefined
2.
var a = 1;
function foo() {
console.log(a);
let a = function() {}
}
foo(); // 输出什么? 报错
3.
var a = 1;
function foo() {
console.log(a);
function a() {}
}
foo(); // 输出什么? function a