JavaScriptピットとテクニック:関数argments
1077 ワード
非厳格モードでは、関数の実行開始時に、
arguments
の長さと実際の参加転送の個数が一致しています.もし実参加が少ないなら、複数のモジュラスはarguments
バインディングに影響しません. function f(x, y, z) {
x = 100;
arguments[2] = 10; // ,arguments[2] z
z = 1; // , arguments
console.log(arguments[0], arguments[1], arguments[2]);
console.log(arguments.length); // arguments ,
console.log(x, y, z);
}
f(3, 2);
結果は以下の通りです100 2 10
2
100 2 1
厳密モードでは、関数のみが最初の相互マッピングを実行し、その後arguments
参照との間の修正は互いに影響しない. function f(x, y, z) {
'use strict'
x = 100;
z = 1;
arguments[1] = 10;
console.log(arguments[0], arguments[1], arguments[2]);
console.log(x, y, z);
}
f(3, 2);
結果は以下の通りです3 10 undefined
100 2 1
矢印関数()=>{}
ないarguments
let fn = (i) => console.log(arguments);
fn(11);
結果エラー:ReferenceError: arguments is not defined