Core JavaScript 1.5 Reference:Functions:arguments:callee
出典: MDC
目次 |
[編集] 概要
現在実行している関数を示します。
| arguments および Function.arguments (非推奨) のプロパティ | |
| 実装されたバージョン: | JavaScript 1.2
JavaScript 1.4: |
| 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) を返す