请考虑以下代码:
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中的错误?