有没有理由不把JavaScript中的var替换成let呢?
Is there a reason not to replace `var` with `let` in JavaScript?
一个问题,我的长辈在JavaScript: 撇开事实, let
有一个不同的变量范围比var
做,在我看来,在绝大多数情况下,没有理由使用var
超过let
。当然,如果您在if
语句中定义一个变量,那就不一样了,但是除了作用域之外,还有其他理由使用其中一个而不是另一个吗?
编辑:要清楚,这个问题是关于JavaScript的最佳实践(即优点和缺点),不是关于var
和let
之间差异的本质。
谢谢!
不,我认为没有原因。从我所读到的,var
留在ES6是为了向后兼容。我读过的大多数文章都建议逐渐用let
替换所有var
。当然,这应该考虑到您提到的if
块的差异。我现在在ES6代码中只使用let
。埃里克·艾略特也不使用var。没有什么var
使用let
不能做得更好。如果您需要整个函数的作用域,请在函数的顶部创建let
。
我注意到有一点不同。就是在全局作用域中定义变量时,定义为var
的变量可以用window.variable
访问,而定义为let
的变量不能用window
对象访问。但是,通过正确编写模块化代码,不允许var
语句泄漏到window
,因此这并不重要。
我还建议在变量引用(而不是原始变量的值)不会发生突变的情况下使用const
而不是let
。
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 我如何找到一个句子中的所有空格并替换忽略它们
- 如何用更合适的内容替换document.write
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 用空格替换下划线PHP
- str.split(someString).join(someOtherString)是否等效于替换
- 使用javascript的图像替换循环
- window.location替换并传递URL历史记录条目中的变量
- 带有let的JS/EECMAScript6私有字段的模式
- 替换标记中的属性
- 指令的模板必须只有一个根元素:With restrict E&替换true
- AngularJs对ng消息的自定义替换
- 用超链接替换URLS
- 用cdata标记替换脚本标记
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 在javascript中,I'我很难弄清楚如何让regex只替换捕获而不替换匹配
- 替换url中变量的值
- 使用let初始化的函数在被this访问时不被替换
- 有没有理由不把JavaScript中的var替换成let呢?