所以我试图在chrome中运行这两个函数:
function let_test1() {
debugger;
let something = true;
return something;
}
function let_test2() {
debugger;
console.log(something);
let something = true;
return something;
}
如果在let_test1
中尝试在断点处评估something
,则得到undefined
。
如果我在let_test2
中尝试此操作,则会收到ReferenceError。
为什么会发生这种情况?
澄清
不确定这是否与TDZ答案直接相关,因为这与第一个解决“未定义”而不是“参考错误”的示例有关,问题是由什么引起的。我认为TDZ仅解决“参考错误”。
应该如此,为什么在第一个示例中将其解析为“未定义”?按照我目前的理解,它应该抛出ReferenceError。