如果我使用const,为什么JSHint会发出警告?

And*_*ger 286 javascript const jslint node.js jshint

这是我使用const时得到的错误:

<error line="2" column="1" severity="warning" message="&apos;const&apos; is available in ES6 (use esnext option) or Mozilla JS extensions (use moz)." source="jshint.W104" />
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像这样:

const Suites = {
    Spade: 1,
    Heart: 2,
    Diamond: 3,
    Club: 4
};
Run Code Online (Sandbox Code Playgroud)

代码工作正常只有JSHint每次都警告我.

Jam*_*ard 501

当依赖ECMAScript 6等功能时const,您应该设置此选项,以便JSHint不会引发不必要的警告.

/*jshint esnext:true*/(编辑2015.12.29:更新语法以反映@ Olga的评论)

/*jshint esversion: 6 */

const Suites = {
    Spade: 1,
    Heart: 2,
    Diamond: 3,
    Club: 4
};
Run Code Online (Sandbox Code Playgroud)

顾名思义,此选项告诉JSHint您的代码使用ECMAScript 6特定语法. http://jshint.com/docs/options/#esversion

编辑2017.06.11:根据此答案添加了另一个选项.

虽然内联配置适用于单个文件,但您也可以通过.jshintrc在项目的根目录中创建文件并在其中添加文件来为整个项目启用此设置.

{
  "esversion": 6
}
Run Code Online (Sandbox Code Playgroud)

  • 文档现在说"警告"这个选项已被弃用,将在JSHint的下一个主要版本中删除.使用esversion:6代替.虽然我的Webstorm内置插件无法识别新选项.我最后指定了两者. (8认同)
  • 对我来说,它的.jshintrc不是.jshint,不确定jshint版本是否存在差异 (5认同)

Zan*_*non 261

您可以在应用程序的根目录中添加名为.jshintrc的文件,其中包含以下内容,以便为整个解决方案应用此设置:

{
    "esversion": 6
}
Run Code Online (Sandbox Code Playgroud)

James的回答表明您可以/*jshint esversion: 6 */每个文件添加注释,但如果您需要控制许多文件,则需要做的工作比必要的要多.

  • @EthanYang,没有。没有额外的配置。只需确保 JSHint 可以找到该文件。来自文档:`JSHint 将开始在与被 linted 文件相同的目录中查找此文件。如果没有找到,它会将目录树向上移动一级,一直到文件系统根目录。(请注意,如果输入来自 stdin,则 JSHint 不会尝试查找配置文件)` (2认同)

Nic*_*ile 49

使用export语句时,我收到了同样的警告.我正在使用VS Code并使用类似的方法来处理Wenlong Jiang的解决方案.

  1. 用户设置
  2. JSHint配置
  3. "jshint.options": {} (编辑)
  4. 指定时使用双引号"esversion"

    或者将此代码段复制到用户设置中:

    "jshint.options": {
      "esversion": 6,
    }
    
    Run Code Online (Sandbox Code Playgroud)

.jshintrc如果要为编辑器配置全局jshint设置,则无需创建文件

  • 谢谢.对于那些使用visual studio代码的人来说绝对是最好的答案.对于参考,用户设置通过(Mac :)"代码">首选项>设置. (8认同)

Phi*_*hil 38

如果您正在使用VSCode:

  • 转到首选项 - > 设置(cmd + ,)
  • 输入jshint.options到搜索栏
  • 将鼠标悬停在上面,然后点击铅笔图标
  • 它现在附在右侧.
  • 添加"esversion": 6到选项对象.

或者只是将其添加到您的用户设置:

"jshint.options": {
    "esversion": 6
}
Run Code Online (Sandbox Code Playgroud)


Jos*_*man 30

我花了很多年时间试图解决这个问题 每个解决方案都涉及"设置选项".我不知道这意味着什么.最后,我弄清楚了.您只需在文件顶部添加注释掉的行即可/*jshint esversion: 6 */.

解

  • 正如我所发现的那样,这样做的唯一问题是你必须将注释添加到你使用的每个文件的顶部.一个更好的解决方案是在你的app的根文件夹中创建一个名为`.jshintrc`的新文件,然后将以下代码添加到文件`````{esnext":true}``` (24认同)
  • `{"esnext":true}`现在[已弃用](http://jshint.com/docs/options/#esnext).你现在应该使用`{"esversion":6}`. (16认同)
  • 我必须使用过时版本的JSHint,因为只有使用"esnext":true`才能解决这个问题.`"esversion":6`没有效果. (3认同)
  • 然后升级你的JShint (3认同)

Wen*_*ang 18

您可以在jshint选项对象中指定esversion:6.请看图像.我正在使用grunt-contrib-jshint插件.

在此输入图像描述

  • 这适用于使用Grunt的用户。将此添加到gruntfile.js (2认同)

Sin*_*hak 8

在你的 package.json 中你可以告诉 Jshint 像这样使用 es6

"jshintConfig":{
    "esversion": 6 
}
Run Code Online (Sandbox Code Playgroud)


Pra*_*rve 5

当您开始使用 ECMAScript 6 时,IDE 会抛出此错误。

有两种选择:

如果您只有一个文件并且想要使用 es6,那么只需在文件顶部添加以下行。

/*jshint esversion: 6 */
Run Code Online (Sandbox Code Playgroud)

或者,如果您有多个 js 文件或者您正在使用任何框架(如 nodejs express),您可以.jshintrc在根目录中创建一个名为的新文件,并在文件中添加以下代码:

{
    "esversion": 6
}
Run Code Online (Sandbox Code Playgroud)

如果你想为每个项目使用 es6 版本,你可以配置你的 IDE。


Joh*_*Pix 5

.jshintrc目录中创建文件并在其中添加最新的 js 版本:"esversion": 9和 asi 版本:("asi": true这将帮助您避免使用分号)

{
    "esversion": 9,
    "asi": true
}
Run Code Online (Sandbox Code Playgroud)


xte*_*ore 5

不需要创建.jshintrc文件。

如果您使用 ECMAScript 6 那么您需要做的就是告诉 JSHint:

  1. 转到文件 > 设置
  2. 导航到语言和框架 > JavaScript > 代码质量工具 > JSHint
  3. 向下滚动以找到关于与指定 ECMAScript 版本不兼容的警告
  4. 单击“设置”
  5. 输入6,然后按[设置]
  6. 点击【确定】