【问题标题】:Why `func || (..args) => {...}` does not compile?为什么`func || (..args) => {...}` 无法编译?
【发布时间】:2015-08-23 18:46:32
【问题描述】:

以下sn-p无法编译:

const a = a || (...args) => {
  console.log(args);
}

出现以下错误:

repl: Unexpected token (1:16)
> 1 | const a = a || (...args) => {
    |                 ^
  2 |   console.log(args);
  3 | }

使用以下解决方法,它可以工作:

const a = a ? a : (...args) => {
  console.log(args);
}

除了原来的问题,@loganfsmyth 已经解决了。下一个问题是,为什么下面的代码有效?

const a = a || () => {}

【问题讨论】:

  • 你为什么要这样使用a?你用const a 声明a,所以它永远不会有你需要在该行检查的值。这只是示例代码吗?

标签: ecmascript-6 babeljs


【解决方案1】:

此代码中有两个不同的问题。您问题的具体答案是您需要括号,例如

const a = a || ((...args) => {
  console.log(args);
});

但是这也不起作用,因为您还在 a 初始化之前阅读它,这将触发一个临时死区错误。不清楚为什么你会在这段代码中像这样使用a

【讨论】:

  • 嗯,第二个问题没问题,那只是我的代码sn-p。你的建议解决了我的问题。非常感谢!但为什么这行得通? const a = a || () => {}
  • 我不知道,对不起。
  • 似乎x = a || (…) => … 无法避免x = (…) => … || a; 中的歧义(ArrowFunctionAssignmentExpression,但不是OrExpression)。我也不知道为什么a || () => {} 有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多