【JSリファレンス】Argumentsオブジェクト
更新日:2024/06/14
Argumentsオブジェクトは、関数コード実行時に、関数内で使用できる変数argumentsとして自動で生成されるオブジェクトです。
※アロー関数では生成されません。
このオブジェクトは数値インデックスを持ち、引数が順番にセットされます。
非strictモードでは、数値インデックスと引数が連動しており、一方を変更すると他方も変更されます。
strictモードはこのような機能は実装されていません。
■strictモードでのArguments
次のコードは、strictモードでのArgumentsオブジェクトの動作を確認しています。
Argumentsオブジェクトと引数が連動していません。
"use strict";
const func = function(a,b,c){
console.log( arguments );
// { 0: 1, 1: 2, 2: 3 }
a = 100;
arguments[1] = 200;
console.log( arguments );
// { 0: 1, 200: 2, 2: 3 }
console.log( a,b,c );
// 100 2 3
}
func(1,2,3);
■非strictモードでのArguments
次のコードは、非strictモードでのArgumentsオブジェクトの動作を確認しています。
Argumentsオブジェクトと引数が連動しています。
const func = function(a,b,c,d){
console.log( arguments );
// { 0: 1, 1: 2, 2: 3, 3: 4 }
a = 100;
arguments[1] = 200;
console.log( arguments );
// { 0: 100, 200: 2, 2: 3, 3: 4 }
console.log( a,b,c,d );
//100 200 3 4
}
func(1,2,3,4);
Argumentsオブジェクトは受け取った引数が全てセットされます。
引数定義より実際に与えられた引数の個数が多い場合、余剰分は引数と連動しません。
const func = function(a,b,c){
console.log( arguments );
// { 0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6 }
arguments[4]=100;
console.log( arguments );
// { 0: 1, 1: 2, 2: 3, 3: 4, 4: 100, 5: 6 }
console.log( a,b,c );
// 1 2 3
}
func(1,2,3,4,5,6);
同様に引数定義より実際に与えられた引数の個数が少ない場合も、受け取った引数の数だけセットされます。
余剰となる引数と連動しません。
const func = function(a,b,c){
console.log( arguments );
// { 0: 1, 1: 2 }
c=100;
console.log( arguments );
// { 0: 1, 1: 2 }
console.log( a,b,c );
// 1 2 100
}
func(1,2,3,4,5,6);
deleteキーワードでArgumentsオブジェクトの数値インデックス要素を削除した場合、その要素と引数との連動が失われます。
ただし、引数はそのまま残ります。
const func = function(a,b,c){
console.log( arguments );
// { 0: 1, 1: 2, 2: 3 }
delete arguments[1];
b = 200;
console.log( arguments );
// { 0: 1, 2: 3 }
console.log( a,b,c );
// 1 200 3
}
■プロパティ
■メソッド
関連ページ
更新日:2024/06/14
スポンサーリンク
記事の内容について
こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://jsref.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。