JavaScriptのargumentsオブジェクトとcalleeプロパティのサンプルです。
| 確認環境 ・Windows10 ・Google Chrome |
目次
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>
10行目は、引数に2と3をセットしています。
3行目の関数の引数はありません。
JavaScriptでは、この状態で関数を実行してもエラーになりません。
4行目は、argumentsオブジェクトに添え字をつけて確認しています。最初の添字は0からはじまります。最初の引数の2が表示されます。
5行目もargumentsオブジェクトで2つめの引数の3が表示されます。
6行目は、3つめの引数はないのでundefinedが表示されます。
7行目は、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;
//}
</script>
4行目は、calleeプロパティです。実行中の関数を取得します。
8-10行目が、calleeプロパティから取得した内容です。
関連の記事
JavaScript 関数のサンプル
JavaScript 再帰関数のサンプル
JavaScript 関数のデフォルト引数のサンプル
JavaScript 無名関数(アロー関数式)と即時関数のサンプル
JavaScript クロージャのサンプル
JavaScript 引数/戻り値が関数のサンプル(高階関数)