最近我参加了有关Frontend开发的面试,面试官想到了一个问题,这使我怀疑我对javascript的信心。问题是
function some() {
console.log(a) // undefined
console.log(b) // Reference Error: cannot access b before initialization.
var a = 10;
let b = 15
}
我知道这里正在发生吊装,但是我不确定为什么b
会引发参考错误。有人可以解释吗?
答案 0 :(得分:0)
与以var声明的变量(其值将以undefined开头)不同,let变量必须在对其定义求值后才进行初始化。在初始化之前访问变量会导致ReferenceError。该变量从程序段的开始一直处在“临时死区”中,直到初始化完成为止。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let