ES6 '...' 符号在 jslint 中给出错误?

Posted

技术标签:

【中文标题】ES6 \'...\' 符号在 jslint 中给出错误?【英文标题】:ES6 '...' notation gives error in jslint?ES6 '...' 符号在 jslint 中给出错误? 【发布时间】:2016-11-28 14:22:45 【问题描述】:

每当我在使用“...”表示法时针对 jslint 运行代码时,我都会收到 Unexpected token 错误。我正在为 Grommet UI 使用 grommet-toolbox(以及用于 React 的 UI/UX 框架),因此当我运行 gulp dev 命令时出现此错误,因此无法编写如下代码:

return ...state, fetching: true

(上面的代码在这个文件的第10行:https://github.com/learncodeacademy/react-js-tutorials/blob/master/5-redux-react/src/js/reducers/tweetsReducer.js)

如何解决这个问题?

【问题讨论】:

不是 ES6/2015 也不是 ES2016,但不是标准化的语法。您必须使用 babel-eslint 才能正常工作。 【参考方案1】:

Object spread operator 不是 ECMASCRIPT 标准,而 Array spread operator 是。所以,这可能是你的 lint-issue 的原因。

您可以在这里找到更多信息:https://github.com/sebmarkbage/ecmascript-rest-spread


请注意,我建议您看一下eslint,因为它是用于 esnext 的常用 linter(它是可插入的,并且可能有避免此问题的解决方案)。

【讨论】:

【参考方案2】:

请尝试使用Object.assign,而不是使用扩展运算符,它们应该可以完成同样的事情。只是没有 jshint 输出警告/错误。

【讨论】:

【参考方案3】:

如果您使用 JSHint,您可以在项目根目录的 .jshintrc 中使用它。


  "esnext": true,
  "esversion": 6

【讨论】:

这似乎不起作用:Incompatible values for the 'esversion' and 'esnext' linting options. (0% scanned) 我在 vsc 中遇到此错误,并按照您的建议更新我的 .jshintrc 以解决问题。 -1。 显然是关于 jslint 的问题。解释如何做 OP 要求 使用不同的工具 是无益且无关紧要的。

以上是关于ES6 '...' 符号在 jslint 中给出错误?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 JSLint 会在这个函数上给出严格的违规错误?

JSLinting ES6 模块:未声明的全局变量(来自 CDN 的 jQuery)

为啥 JSLint 更喜欢点符号而不是方括号?

JSLint报错翻译

如何自定义 JSLint?

关于 JSLint,它不喜欢 for 循环,以及尾调用优化