评估默认参数时出现ECMAScript 6异常

时间:2015-09-25 12:02:05

标签: javascript ecmascript-6 babeljs

请考虑以下代码:

class Test {
  constructor() {
    this.a = 1;
  }

  method1() {
    throw new Error();
  }

  method2(b = this.method1()) {
    return new Promise((resolve) => {
      console.log(this);  // logs undefined
      resolve(this.a);
    });
  }
}

const t = new Test();
t.method2()
.then((r) => {
   console.log('result', r);
})
.catch((e) => {
   console.log('error', e);
});

请注意method1如何用作method2的默认参数,会引发异常。

使用Babel来转换此代码时,console.log(this)会显示this变为undefined,但不会引发异常。这是标准行为(如果是,它背后的原因是什么)或Babel中的错误?

0 个答案:

没有答案