为什么`func || (..args)=> {...}`不编译?

时间:2015-08-23 18:46:33

标签: ecmascript-6 babeljs

以下代码段无法编译:

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 || () => {}

1 个答案:

答案 0 :(得分:1)

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

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

然而,这也行不通,因为您在初始化之前也在阅读a,这将触发抛出临时死区错误。目前尚不清楚为什么你会在这段代码中使用a