我在玩一些代码,遇到了一种情况,我无法确定为什么'let'的行为是这样。let关键字问题
对于以下代码块:
var x = 20; // global scope
function f() {
let x = x || 30;
}
f(); // VM3426:1 Uncaught ReferenceError: x is not defined(…)
我得到的错误上执行F 'x被没有定义'()。我明白“让”变量不会被提升,但是因为'x'有全局副本,为什么函数'f'中的行不是全局副本而是抛出错误? 在函数的开头,'let'是否设置变量未声明(而不是由于提升引起的'未定义'var)? 有没有办法在函数中获取'x'的全局副本?
的[“让”的关键字与“VAR”可能的复制关键字在Javascript](http://stackoverflow.com/questions/762011/let-keyword-vs-var-keyword-in-javascript) – ozil
本地'x'的声明是阴影的全球之一,但你是根据现有的'x'分配一个值,compliler ca没有找到一个像一个是被遮蔽的,另外一个还没有被宣布。 –