jslint --edition=最新的意外ES6功能.常量

jslint --edition=latest Unexpected ES6 feature. const

本文关键字:ES6 功能 常量 意外 --edition 最新 jslint      更新时间:2023-09-26

我正在尝试使用node-jslint https://github.com/reid/node-jslint 以保持我的代码干净

我的nodejs脚本中有一个const,但是jslint说它不是有效的ES6代码

 Unexpected ES6 feature.
const pdPersonsFilterId = process.argv[2]; // Line 10, Pos 0

这是我在控制台中使用的命令

jslint --edition=latest index.js

根据 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const 可以使用全局常量。

为什么 jslint 不认为这段代码是有效的?

2020 年编辑:正如 ctrl-alt-delar 在评论中提到的那样,正如答案中预测的那样,JSLint 已经放弃了es6要求——看起来像 2017 年 10 月 9 日。

也就是说, es6不再是有效的 JSLint 选项。今天的OP代码将如下所示:

/*jslint browser */
/*global process */
const pdPersonsFilterId = process.argv[2];

但是,如果您认为自己处于 OP 的情况,请确保您用于 lint 文件的任何进程都没有使用旧版本的 JSLint。某些工具附带过时的版本,或者您的构建脚本可能维护旧版本,以免破坏旧代码。如果您遇到这种情况,以下解决方法应该可以正常工作。

但是,如果您知道您的JSLint版本比2017年10月9日更新,并且您遇到了似乎是es6错误,请打开一个新的StackOverflow问题!

<小时 />

对于原始问题/旧版本的JSLint...

JSLint 对 ES6 非常满意;你只需要让它知道你正在使用 ES6。将 es6 指令添加到您的 JSLint 配置或文件之上,并从中获利。

/*jslint es6 */
const pdPersonsFilterId = process.argv[2];

现在,您看到的警告消失了。

来自JSLint的帮助:

ECMAScript [ES6] 的第六版可能需要一些时间才能达到到处存在。在未完全使用的环境中使用新功能实施新标准将导致失败。这就是为什么JSLint给出使用 ES6 功能时的警告。ES6的一些功能很好,因此,JSLint 将使用 es6 选项识别 ES6 的优点。如新标准的实施变得更加稳定和更好理解,JSLint 识别的特征集可能会增加。过渡到 ES6 完成后,es6 选项将是下降。[强调我的]

似乎很公平。所以你看到的只是警告你,你所拥有的可能不适用于不支持 ES6 的地方,因为现在有很多地方。一旦ES6更广泛 - 或者如果你明确让Crockford知道你打算使用ES6 - 警告就会消失。(TJ的观点可能是,至少对于Node,现在是删除警告的时候了;^D)

试试 ESLint。

它在NPM上有更好的统计数据,文档非常出色,并且被广泛使用。