(function(){
var x = y = 1;
})();
console.log(y); // 1
console.log(x); // ReferenceError: x is not defined
以上代码等同于:
var y = 1;
function fn() {
var x = y;
}
x在外部无法访问到,因此打印 x is not defined
var a = 10;
function foo() {
console.log(a); // ??
let a = 20;
}
foo();
答案:ERROR,let声明的变量会使当前块级作用域出现死区,又因在声明前访问不到此变量,报错
var a = 10;
function foo() {
console.log(a); // ??
var a = 20;
}
foo();
//undefined,参见作用域链访问顺序