为什么我的解构失败了?

3

我有类似以下代码:

class Foo {
  foo() {
    return this.query( { key : "value" }, {
      multiple: true,
      resolveForeignKeys: false
    } );
  }

  query( conditions, {
    cast = null,
    multiple = false,
    resolveForeignKeys = true
  } = {} ) {
    console.log( "working..." );
  }
}

(new Foo()).foo();

当我在浏览器中运行这段代码时,它能够正常工作。然而,当我通过Node运行时,会出现以下错误:

TypeError: Cannot read property 'multiple' of undefined.

当我从函数声明中删除默认值 = {} 时,代码将正常运行。 我也确定这在另一台机器上的另一天可以正常工作。
我还发现了一个如何在ES6中解构具有所有默认值的选项参数? ,答案表明问题来自于缺少默认值( = {} )。
1个回答

4

这是一个与解构相关的bug,已经在Node 6.9.2中修复

重要更改

  • 依赖项
    • V8:对解构边缘情况进行了各种修复
      • 从V8上游cherry-pick了3c39bac (Cristian Cavalli) #9138
      • 从上游v8 cherry-pick了7166503 (Cristian Cavalli) #9173

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接