var obj = {
a: 0,
foo: function() {
setTimeout(function() {
this.a = 2;
}, 200);
setTimeout(function() {
console.log(this.a);
}, 100);
},
};
var i = 0;
while (i < 2) {
setTimeout(function() {
obj.foo();
}, 200 * i);
i++;
}
Я хочу понять, почему код выдает именно такой результат?
var obj = { a: 0, foo: function() { setTimeout(function() { this.a = 2; }, 200); setTimeout(function() { console.log(this.a); }, 100); }, };
var i = 0; while (i < 2) { setTimeout(function() { obj.foo(); }, 200 * i); i++; }
– Xzet Oct 31 '18 at 11:03undefined– Grundy Oct 31 '18 at 11:16thisв момент вызова console.log указывает не наobj, у которого есть свойствоa, а наwindow, у которого этого свойства может не быть. Почему контекст потерялся - описано в вопросе дубликате. – Grundy Oct 31 '18 at 14:10