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

 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()が呼ばれる。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2012-01-28 (土) 14:32:58