我有以下JavaScript:
var calc = {
getMem: function(){
return mem;
},
mem:0,
add: function (a,b){
mem = a*b;
return a*b;
},
}
当我打电话
calc.getMem();
离开后我立即收到ReferenceError
但是,当我打电话
calc.add(3,2);
calc.getMem();
我收到预期的结果。
显然我错过了这个,所以我将getMem更改为
getMem: function(){
return this.mem;
}
我的问题是:为什么在我第一次调用add时它在初始状态下(没有此状态)起作用?
最佳答案
调用cal.add
时,您正在创建全局变量mem
。因此似乎可行,因为getMem
然后尝试访问该全局变量。但这可能不是您想要的。如果在getMem()
之前调用add()
,它仍在尝试访问全局mem
,但尚未定义它,因此会出错。
var calc = {
getMem: function(){
return mem;
},
mem:0,
add: function (a,b){
mem = a*b;
return a*b;
},
}
calc.add(2, 4)
console.log(mem) // available globally