15

在过去的几个月里,我学习了很多关于 JavaScript 的知识。多年来一直滥用这些语言,我敢说我现在对这门语言有了更好的理解,并且我开始喜欢它的功能性的好处。
最近我开始学习 Scheme,但这只是为了好玩。浏览MDN 参考资料,我注意到 JS 虽然缺少块作用域,但确实有一个关键字可用于声明给定块的局部变量,很像 Scheme 的let

for (var i=0;i<someArray.length;i++)
{
    console.log(someArray[i]);
}
console.log(i);//will log someArray's length

然而:

for (let i=0;i<someArray.length;i++)
{
    console.log(someArray[i]);
}
console.log(i);//undefined

所以我现在想知道的是:为什么不let经常使用?它与 X 浏览器支持有关吗?它只是那些鲜为人知的好东西之一吗?
简而言之,使用varoverlet有什么好处,有什么注意事项?

据我所知,let如果有的话,它的行为更加一致(单个块中的双重声明引发 a TypeError,但函数体除外(ECMA6 草案解决了这个问题)。
老实说,除了这个特性/关键字不是很出名,我很难想到任何反对使用letfor 循环的论点,或者任何使用临时变量的地方使代码更具可读性。

4

1 回答 1

28

是的,它完全与浏览器支持有关。目前只有 Firefox 实现了它(因为它是他们的 ECMAScript 超集的一部分)

但它即将出现在 ES6 中,所以有希望......

鉴于两者都得到支持,我怀疑是否可以说有很多好处varlet我认为口头禅将是let是新的var

于 2012-11-26T15:52:45.420 回答