コールバック関数はグローバルスコープで実行される

 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ではない。

以下の例ではグローバルのfoo()が呼ばれる。

 function foo() { console.log("1"); }
 function bar() { 
   function foo() { console.log("2"); }; 
   setTimeout("foo()", 1000);
 } 
 bar(); // 1

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS