jslint --edition=latest 意外的 ES6 功能。常量

2024-03-02

我正在尝试使用node-jslinthttps://github.com/reid/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 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const可以使用全局常量。

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


2020年编辑: As ctrl-alt-delar 在评论中提到 https://stackoverflow.com/questions/36104136/jslint-edition-latest-unexpected-es6-feature-const/36265255#comment99599721_36265255,正如答案中所预测的那样,JSLint 已经放弃了es6要求——看起来像2017 年 10 月 9 日 https://github.com/douglascrockford/JSLint/commit/3fa7fcc0d96dfcd1b5d0bab2a3198b29c6811081#diff-01d3d81a6eb6d82af3c377b55dc4fa28.

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

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

但是,如果您认为自己处于 OP 的情况,确保您用来检查文件的任何进程都没有使用旧版本的 JSLint。有些工具附带过时的版本,或者您的构建脚本可能维护旧版本,以免破坏旧代码。如果您遇到这种情况,下面的修复应该有效。

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


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

JSLint 对 ES6 很满意;你只需要让它知道你正在使用 ES6 即可。添加es6指令到您的 JSLint 配置或文件顶部,然后获利。

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

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

From JSLint 的帮助 http://jslint.com/help.html:

ECMAScript [ES6] 第六版可能需要一段时间才能达到 无处不在。在不完全支持的环境中使用新功能 实施新标准将导致失败。这就是 JSLint 给出的原因 使用 ES6 功能时的警告。ES6的一些特性很好, 因此 JSLint 将通过 es6 选项识别 ES6 的优点。作为 新标准执行更加稳定更好 据了解,JSLint 识别的功能集可能会增加。过渡到 ES6 完成后,es6 选项将是 掉了。[emph我的]

看起来很公平。所以你所看到的只是警告你,你所拥有的可能无法在不支持 ES6 的地方工作,因为现在有很多地方都支持 ES6。一旦 ES6 更加普及——或者如果您明确让 Crockford 知道您打算使用 ES6-- 警告将会消失/消失。 (TJ 的观点可能是,至少对于 Node,现在是删除警告的时候了。;^D)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jslint --edition=latest 意外的 ES6 功能。常量 的相关文章