var x = 5,
o = {
x: 10,
doIt: function doIt(){
var x = 20;
setTimeout(function(){
alert(this.x);
}, 10);
}
};
o.doIt();
为什么这是指window object rather than o
。我在object o
上下文中,所以它应该打印我10对吗?
答案 0 :(得分:4)
匿名函数在10ms后执行,执行上下文当时不在o
。
答案 1 :(得分:0)
要发出此提醒20,请将this.x
更改为x
。
答案 2 :(得分:0)
var x = 5,
o = {
x: 10,
doIt: function doIt(){
var x = 20;
setTimeout(function(){
alert(this.x);
}, 10);
}
};
o.doIt();
传递到setTimeout()
的所有功能都在global scope
中执行。值为5,因为this.x与window.x相同