我有以下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()
仍在尝试访问global 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句