我的Aurelia应用程序中有以下代码:
import {digit} from "../util/random" // generates a random digit [0,9]
export class UnitedStates {
zipCode() {
return ""+digit(5);
};
zipPlus4() {
return this.zipCode()+"-"+digit(4);
};
...
}
在 zipPlus4
的主体上获得错误 TypeError: Cannot read property 'zipCode' of null
. 在开发人员工具中检查显示 this
是 null
.
为什么 this
null
,我该如何解决这个问题?
1 回答
这是转换器的问题 . 回想一下,箭头函数表示法维护词汇
this
(或更多read here) . 因此,当Babel和其他转换器进入新范围时,它们会维护一个本地变量,以便可以从任何子范围访问它 . 通常,此变量为_this
.有时,像DevTools这样的调试器很难理解源图,并报告了一个null
this
. 事实证明,这只是在检查代码时;运行代码时,它可以正常工作 .那么当报告为空时,如何检查
this
的值?通常从控制台检查_this
. 这将为您提供正在使用的真正this
值 .