【问题标题】:Is there a reason not to replace `var` with `let` in JavaScript? [duplicate]有没有理由不在 JavaScript 中用 `let` 替换 `var`? [复制]
【发布时间】:2016-10-15 11:41:14
【问题描述】:

我的前辈在 JavaScript 中的一个问题:抛开事实let has a different variable scope than var does,在我看来,在绝大多数情况下,没有理由使用var 而不是@ 987654326@。当然,如果你在 if 语句中定义了一个变量,那就不是一回事了,但是除了作用域之外,还有其他原因可以使用另一个吗?

编辑:需要明确的是,这个问题是关于 JavaScript 中的最佳实践(即优缺点),不是关于 var 之间差异的本质和let

谢谢!

【问题讨论】:

  • @jedi,不,这个不一样
  • 重复的查找器一如既往的过度反应:D
  • @estus 我不同意“最佳实践”问题是基于意见的。 Stack Overflow 的问题在于,所有这些问题滥用者通常都过于直接地提出问题。 “最佳实践”的意思是“优点和缺点”,但他们将其解读为“您的意见是什么”。这里有很多很多很棒的问题都被这样滥用了。
  • @daveslab,我能想到的不切换所有内容的唯一原因是时间死区。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • @RoboRobok,我同意 stackoverflow 有很多问题,包括这个也让我烦恼的问题。此外,我最近开始回答问题,最大的消极因素是关于简单问题的回答获得 3-5 个赞,而当我花一个小时浏览 OP 的代码或详细解释一个概念时,只能从 OP 获得一个赞最好的

标签: javascript ecmascript-6


【解决方案1】:

不,我认为没有理由。根据我的阅读,var 保留在 ES6 中以实现向后兼容性。我读过的大多数文章都建议逐步将所有出现的var 替换为let。当然,这应该考虑到您在if 块中提到的差异。我现在在我的 ES6 代码中只使用 letEric Elliott doesn't use var either. 使用 var 没有什么比 let 做得更好。如果您需要整个函数范围,请在函数顶部创建 let

我注意到了一个不同之处。就是在全局范围内定义变量时,定义为var的变量可以用window.variable访问,而let的变量不能用window对象访问。但是使用正确编写的模块化代码,不应允许var 语句泄漏到window,因此这并不重要。

我还建议使用const 而不是let 用于变量reference(相对于原始变量的)不会变异了。

【讨论】:

    猜你喜欢
    • 2015-12-24
    • 2019-06-25
    • 2020-09-29
    • 2018-06-08
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 2016-04-05
    • 2018-05-14
    相关资源
    最近更新 更多