【问题标题】:javascript, unrecognized character with spread operator inside reducejavascript,内部带有扩展运算符的无法识别字符减少
【发布时间】:2016-02-18 17:03:30
【问题描述】:

我正在构建一个小函数,但扩展运算符似乎存在问题。我的 linter 对我大喊关于扩展运算符的问题,但我在我的应用程序的其他地方使用它没有问题。我一直在这样做,并且无法为我的生活找出原因。这是函数:

function mapDispatchToProps(dispatch, props) {
return actionCreators.reduce(function(memo, value, key) {
    return {...memo,
        [key]: value.bind(null, dispatch)
    };
}, {});
}

它指向第二个。在扩展运算符中并说无法识别的字符。我相信我的语法不正确,但似乎无法弄清楚。任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 你能发布你得到的错误吗?另请注意,大多数浏览器尚不支持用于解构的扩展运算符。
  • SpreadProperty 不是 ES6 的一部分。这是 ES2017 的提案。你的 linter 可能还不知道这个提议。
  • 我也会退出 memo 并确保它是您认为的那样。
  • 扩展运算符在我的代码中工作(我在代码的上面部分使用它就好了)。

标签: javascript ecmascript-6


【解决方案1】:

Spread 属性不是 ES6 的一部分。 It is a proposal for ES20XX。你的 linter 可能还不知道这个提议。

您需要配置您的 linter 以使用理解此语法的解析器或使用允许您执行此操作的其他 linter,例如 http://eslint.org/

【讨论】:

  • 对不起,我应该澄清更多,传播运算符在我的代码中工作(我在其他位置使用它)。
  • 你是说 linter 在其他情况下不会抱怨吗?
  • 是的,感谢您的帮助!我现在只是使用了一些 lodash 方法来解决它......我真的不确定问题是什么
  • 问题在于 linter 正确地指出您的语法不是 javascript 的一部分。你可能有像 Babel 这样的东西,它会将它翻译成有效的代码,从而使它为你工作,但你的 linter 不知道这一点。它只知道您使用的语法不是标准的或浏览器不支持的语法。您也许可以为您的 linter 找到一个“允许实验性”配置选项,以将其作为有效语法接受。
猜你喜欢
  • 2020-08-25
  • 1970-01-01
  • 2019-11-15
  • 2020-06-22
  • 1970-01-01
  • 1970-01-01
  • 2019-11-09
  • 1970-01-01
  • 2013-01-01
相关资源
最近更新 更多