この関数が 10 を警告するのはなぜですか?
function b (x, y, a) {
arguments[2] = 10;
alert(a);
}
b(1, 2, 3);
この関数が 10 を警告するのはなぜですか?
function b (x, y, a) {
arguments[2] = 10;
alert(a);
}
b(1, 2, 3);
javascript 配列はゼロ インデックスであり、引数は引数として関数に渡されるパラメーターを参照します。
arguments[2] === a === 10
と
1 === x === arguments[0];
2 === y == arguments[1];
(三重等価演算子は間違いではありません)
3 番目の引数を 10 に設定しているためです。MDNから:
引数オブジェクトを使用して、関数内で関数の引数を参照できます。このオブジェクトには、関数に渡される各引数のエントリが含まれます。最初のエントリのインデックスは 0 から始まります。たとえば、関数に 3 つの引数が渡される場合、次のように引数を参照できます。
arguments[0] arguments[1] arguments[2]
引数オブジェクトは、すべての関数内で使用できるローカル変数です。関数のプロパティとしての引数は使用できなくなりました
このリファレンスをさらに使用してください
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Functions_and_function_scope/arguments
この関数は 3 つの入力を取り、最初の 2 つを破棄し、モーダル ポップアップに最後のものを表示しますが、値10
を index 2
ofに代入する前ではなくarguments
(事実上入力a
を10
fromに設定)、3
何も返さずにスコープを終了します。