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

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

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 (1884d)