【发布时间】:2012-11-14 03:14:25
【问题描述】:
在过去的几个月里,我学到了很多关于 JavaScript 的知识。多年来一直滥用这些语言,我敢说我现在对这门语言有了更好的理解,并且我开始喜欢它的功能特性所带来的好处。
最近我开始学习 Scheme,但这只是为了好玩。浏览MDN reference 我注意到 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 浏览器支持有关吗?它只是那些鲜为人知的好东西之一吗?
简而言之,使用var 与let 相比有什么优势,有什么注意事项?
据我所知,let 的行为(如果有的话)更加一致(单个块中的双重声明会引发 TypeError,但函数体除外(不过,ECMA6 草案解决了这个问题)。
老实说,除了这个特性/关键字不是很为人所知之外,我很难想到任何反对使用let for 循环的论点,或者任何使用临时变量使代码更具可读性的地方。
【问题讨论】:
标签: javascript scope var let