具有OR运算符问题的数组分解,未捕获的TypeError:foo不是函数

时间:2019-03-25 18:17:02

标签: javascript ecmascript-6

从函数foo返回true,并使用OR运算符对其进行结构化。

function foo() {
  return true;
}
var [a, b, c] = foo() || [];

为什么会抛出类似foo的错误不是函数。

2 个答案:

答案 0 :(得分:2)

实际错误实际上是: TypeError: foo is not a function or its return value is not iterable

这是因为执行将不会到达OR语句,因为foo()的结果不是false-y(实际上是true)。因此,javascript尝试解构true,这会给您带来TypeError

答案 1 :(得分:1)

看起来像是V8错误报告中的错误:

('{"requestId":"2ef095c8-cec6-4fb2-a4fc-3c036f9ffaa1"}' | ConvertFrom-Json).requestId

在两种情况下,Firefox均正确报告“不可迭代”。