トップ «前の日記(2009-03-07) 最新 次の日記(2009-03-09)» 編集

Ussy Diary


2009-03-08

[JavaScript]無名関数による再帰

arguments.callee を使って呼び出すのがセオリーだと思います。

function requestAnonymous() {
  var count = 0;
  return function() {
    console.log("Hello!" + count++);
    if (count == 10) {
       return;
    }

    arguments.callee();
  }();
}

requestAnonymous();

名前をつけてあげると関数名で呼び出せるんですね。

function requestNaming() {
  var count = 0;
  return function callback() {
    console.log("Hello!" + count++);
    if (count == 10) {
       return;
    }

    callback();
  }();
}

requestNaming();

関数を返す場合 return function() {}; が定石なので名前をつけられることを忘れていました。あ、無名関数でなくなっていました。