コールバック関数はグローバルスコープで実行されるvar Foo = function () { this.num = 1; this.alertNum = function () { alert(this.num); } this.alertNumLater = function () { setTimeout(this.alertNum, 1000); } }; var num = 2; var foo = new Foo; foo.alertNum(); // 1 foo.alertNumLater(); // 2 showNumLater()から呼ばれるコールバック関数 showNum()、すなわち function () { alert(this.num); } はグローバルスコープで実行される。よって、this.numはグローバルオブジェクトであり、this.numはFoo.numではない。 function foo() { console.log("1"); } function bar() { function foo() { console.log("2"); }; setTimeout("foo()", 1000); } bar(); // 1 ↑の例ではグローバルのfoo()が呼ばれる。 |
|