Visit Mozilla.org

Core JavaScript 1.5 Reference:Functions:arguments:callee

出典: MDC


目次

[編集] 概要

現在実行している関数を示します。

arguments および Function.arguments (非推奨) のプロパティ
実装されたバージョン: JavaScript 1.2

JavaScript 1.4: Function.arguments のプロパティとしての callee を非推奨とする。関数ローカルの arguments 変数のプロパティとしてはそのまま維持。

ECMA バージョン: ECMA-262

[編集] 説明

callee はすべての関数オブジェクト内で利用できるローカル変数 arguments のプロパティです。Function.arguments のプロパティとしての callee はもはや使用されていません (Function.arguments 自体も非推奨)。

arguments.callee によって無名関数は自分自身を参照することが出来ます。これは無名再帰関数を作成するときに必要になります。

this キーワードは現在実行している関数を参照するものではありません。関数本体の内部でその関数を参照するには callee プロパティを使用してください。

[編集]

[編集] 例: 無名再帰関数内での arguments.callee の使用

再帰関数は自分自身を参照する必要があります。関数が自分自身を参照するには、一般的には関数の名前を使用します。しかしながら、無名関数には名前がありません。さらにその無名関数を参照するアクセス可能な変数も無い (関数がどの変数にも代入されていない) 場合、その関数には自分自身を参照する手段がありません。 (無名関数は関数式または Function コンストラクタによって作成できます) そこで arguments.callee の出番です。

次の例では関数を定義し、その関数内でさらに階乗関数を定義し、それを返しています。

function makeFactorialFunc() {
   alert('making a factorial function!');
   return function(x) {
      if (x <= 1)
         return 1;
      return x * arguments.callee(x - 1);
   };
}

var result = makeFactorialFunc()(5); // 120 (5 * 4 * 3 * 2 * 1) を返す