JavaScriptのargumentsオブジェクトとcalleeプロパティのサンプルです。
確認環境 ・Google Chrome |
目次
サンプル | argumentsオブジェクト |
argumentsオブジェクトのcalleeプロパティ |
argumentsオブジェクト
- 関数へ渡される引数を、配列のように受け取り確認できます。
- 配列ではないので配列のメソッドは使用できません。
- 関数内でのみ利用できます。
- 以下は、MDNのargumentsオブジェクトのリンクです。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments
argumentsオブジェクトのサンプルです。
<script>
function test1() {
console.log(arguments[0]); //2
console.log(arguments[1]); //3
console.log(arguments[2]); //undefined
console.log(arguments.length); //2
}
test1(2, 3);
</script>
9行目は、引数に2と3をセットしています。
2行目の関数の引数はありません。
JavaScriptでは、この状態で関数を実行してもエラーになりません。
3行目は、argumentsオブジェクトに添え字をつけて確認しています。最初の添字は0からはじまります。最初の引数の2が表示されます。
4行目もargumentsオブジェクトで2つめの引数の3が表示されます。
5行目は、3つめの引数はないのでundefinedが表示されます。
6行目は、argumentsオブジェクトのlengthプロパティです。引数の数を確認できます。
argumentsオブジェクトのcalleeプロパティ
- calleeは英語で呼び出し先という意味です。
- 現在実行中の関数を示します。
- 無名関数は関数名がありませんが、calleeプロパティで呼び出せます。
- 主に再帰関数で使用します。
- ES5のstrictモードではエラーになり使用できません。
- 以下は、MDNのargumentsオブジェクトのcalleeプロパティのリンクです。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments/callee
calleeプロパティのサンプルです。
<script>
function test1() {
return arguments.callee;
}
console.log(test1());
//ƒ test1(){
// return arguments.callee;
//}
console.log(test1);
//ƒ test1(){
// return arguments.callee;
//}
function test2() {
return "arguments.callee";
}
console.log(test2());
// arguments.callee
</script>
3行目は、calleeプロパティです。実行中の関数を取得します。
6行目は、2行目の関数を実行しています。
7-9行目が、calleeプロパティから取得した内容です。
10行目は、関数名の後にかっこ()がありません。関数の内容を表示します。
16行目は、文字列を返します。
18行目は、関数を実行し文字列を表示します。
関連の記事
JavaScript 関数宣言と関数式のサンプル
JavaScript 再帰関数のサンプル
JavaScript 関数のデフォルト引数のサンプル
JavaScript 関数式と無名関数と即時関数
JavaScript クロージャのサンプル
JavaScript 引数/戻り値が関数のサンプル(高階関数)