有没有理由不把JavaScript中的var替换成let呢?

Is there a reason not to replace `var` with `let` in JavaScript?

本文关键字:替换 let var 中的 有理由 JavaScript      更新时间:2023-09-26

一个问题,我的长辈在JavaScript: 撇开事实let有一个不同的变量范围比var做,在我看来,在绝大多数情况下,没有理由使用var超过let。当然,如果您在if语句中定义一个变量,那就不一样了,但是除了作用域之外,还有其他理由使用其中一个而不是另一个吗?

编辑:要清楚,这个问题是关于JavaScript的最佳实践(即优点和缺点),不是关于varlet之间差异的本质。

谢谢!

不,我认为没有原因。从我所读到的,var留在ES6是为了向后兼容。我读过的大多数文章都建议逐渐用let替换所有var。当然,这应该考虑到您提到的if块的差异。我现在在ES6代码中只使用let。埃里克·艾略特也不使用var。没有什么var使用let不能做得更好。如果您需要整个函数的作用域,请在函数的顶部创建let

我注意到有一点不同。就是在全局作用域中定义变量时,定义为var的变量可以用window.variable访问,而定义为let的变量不能用window对象访问。但是,通过正确编写模块化代码,不允许var语句泄漏到window,因此这并不重要。

我还建议在变量引用(而不是原始变量的)不会发生突变的情况下使用const而不是let