为什么您不能排队“或扔”?

时间:2018-10-01 11:09:16

标签: javascript

这似乎很愚蠢,但是我不明白为什么这在语法上是不正确的

const foo = a || throw "cannot be undefined"

这很好的时候

  const b = () => throw 'cannot be undefined'
  const foo  a || b()

1 个答案:

答案 0 :(得分:4)

throw是一个声明。

b()是一个表达式。

a || b接受两个表达式,并产生一个表达式。

每个表达式都可以是一个语句。反之则不成立。

请注意,这也不是语法上的(与您主张的相反):

const b = () => throw new 'cannot be undefined'

但这是

const b = () => { throw new 'cannot be undefined' }

因为箭头函数有两种形式:

  • params => expression
  • params => { statement* }