【问题标题】:Why is my IDE telling me it is wrong to define variables with var in Javascript?为什么我的 IDE 告诉我在 Javascript 中用 var 定义变量是错误的?
【发布时间】:2019-02-13 02:36:12
【问题描述】:

我对 Javascript 比较陌生。我一直在使用 Webstorm IDE 进行锻炼,我注意到当我使用 var 关键字定义变量时,我的 IDE 会抛出一个警告:

为什么在这种情况下使用var 是错误的?真的吗 ?更重要的是,这段代码来自一个教程,导师总是使用var。我应该忽略警告吗?

谢谢。

【问题讨论】:

  • 您的 IDE 中设置的 Javascript language version 是什么?我相信它默认为ECMAScript 6
  • 是的,您可以忽略警告,因为您是该主题的新手。
  • @CRayen 你是对的,它是 ECMAScript 6
  • @ashishsingh 这是个坏建议,OP 不应该忽略警告,它的存在是有原因的。他们现在最好学习这些概念,而不是忽略它们并养成不良的 JavaScript 习惯。
  • 是的,我完全同意,但在这种情况下,它并不是真正的警告,它是以这种方式配置的 lint 并且他才刚刚开始,所以我不希望他对这些事情感到困惑。如果这是一个警告,比如未使用的变量,那是有道理的,但 var vs let 更像是一种练习 IMO

标签: javascript variables syntax scope


【解决方案1】:

这不是“错误”,否则将是错误,而不是警告。

这只是非常、非常、非常非常不好的做法。 var 具有令人困惑的语义。如果不是为了向后兼容,它早就从语言中删除了。

就像警告说的那样:你应该总是更喜欢const。只有在绝对必要时,才使用let。在任何情况下都不要使用var

【讨论】:

  • 但是如果我使用 const,那是不是意味着我将无法更改归因于变量的值? (难道不是 constant 而不是 variable 吗?)
  • 是的。这就是const 的全部意义所在。这就是为什么使用const 是一件好事。在代码的不同部分之间发生变化的事情令人困惑。尽量避免这种情况。请注意,事实上,您在问题中显示的“变量”实际上都没有“变化”。
  • 如果您仔细查看 IDE 中的建议框,它会自动将声明转换为 const。它甚至不提供将其更改为 let,因为 IDE 足够聪明,可以看到您永远不会更改它。在这种特殊情况下,fs 指的是一个库模块,您使用该模块中的函数。如果突然改变,那就太糟糕了!
【解决方案2】:

我认为IDE认为函数是一个对象,并且常量用于对象,而不是数字或字符串之类的变量。这不会影响代码,除非您迫切需要更改它。如果真的很紧急,它只会将问题所在作为错误。

【讨论】:

  • 我通常将 const 用于对象,所以我并不是说这就是确切的用途。
猜你喜欢
  • 1970-01-01
  • 2020-02-16
  • 1970-01-01
  • 2021-11-26
  • 2010-11-15
  • 1970-01-01
  • 2021-06-28
  • 1970-01-01
  • 2019-02-20
相关资源
最近更新 更多