我在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);
};
...
}
在TypeError: Cannot read property 'zipCode' of null
的正文上获取错误zipPlus4
。在开发人员工具中进行检查后发现this
为null
。
为什么this
null
,我该如何解决?
答案 0 :(得分:2)
这是转换器的问题。回想一下,箭头函数表示法维护词汇this
(或更read here)。因此,当Babel和其他转换器进入新范围时,它们会维护一个本地变量,以便可以从任何子范围访问它。通常,此变量为_this
。
有时,像DevTools这样的调试器很难理解源图,并报告了一个空this
。事实证明,这只是在检查代码时;运行代码时,它可以正常工作。
那么当报告为空时,如何检查this
的值?通常从控制台检查_this
。这将为您提供正在使用的真实this
值。