Eli*_*gem 15 javascript scope var let
在过去的几个月里,我一直在学习很多关于JavaScript的知识.多年来一直滥用语言,我敢说我现在对语言有了更好的理解,并且我开始喜欢它的功能性.
最近我接受了学习计划,但这只是为了好玩.浏览MDN引用我注意到JS虽然缺少块作用域,但确实有一个关键字可用于声明给定块的本地变量,就像Scheme的一样let
:
for (var i=0;i<someArray.length;i++)
{
console.log(someArray[i]);
}
console.log(i);//will log someArray's length
Run Code Online (Sandbox Code Playgroud)
鉴于:
for (let i=0;i<someArray.length;i++)
{
console.log(someArray[i]);
}
console.log(i);//undefined
Run Code Online (Sandbox Code Playgroud)
所以我现在想知道的是:为什么不let
经常使用?它与X浏览器支持有关吗?它只是那些鲜为人知的好东西之一吗?
简而言之,使用var
过有let
什么好处,有什么警告?
据我所知,行为let
是,如果有的话,更一致(单个块中的双重声明引发一个TypeError
,除了函数体(ECMA6草稿修复了这个).
说实话,除了这个功能/关键字我不是很了解,我很难想到任何反对使用let
for循环的论据,或者临时变量使代码更易读的地方.