3

この関数が 10 を警告するのはなぜですか?

function b (x, y, a) {
  arguments[2] = 10;
  alert(a);
}

b(1, 2, 3);
4

4 に答える 4

9

javascript 配列はゼロ インデックスであり、引数は引数として関数に渡されるパラメーターを参照します。

arguments[2] === a === 10

1 === x === arguments[0];
2 === y == arguments[1];

(三重等価演算子は間違いではありません)

于 2012-12-31T10:58:11.053 に答える
4

3 番目の引数を 10 に設定しているためです。MDNから:

引数オブジェクトを使用して、関数内で関数の引数を参照できます。このオブジェクトには、関数に渡される各引数のエントリが含まれます。最初のエントリのインデックスは 0 から始まります。たとえば、関数に 3 つの引数が渡される場合、次のように引数を参照できます。

arguments[0]
arguments[1]
arguments[2]
于 2012-12-31T10:58:37.147 に答える
3

引数オブジェクトは、すべての関数内で使用できるローカル変数です。関数のプロパティとしての引数は使用できなくなりました

このリファレンスをさらに使用してください

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Functions_and_function_scope/arguments

于 2012-12-31T11:06:03.990 に答える
1

この関数は 3 つの入力を取り、最初の 2 つを破棄し、モーダル ポップアップに最後のものを表示しますが、値10を index 2ofに代入する前ではなくarguments(事実上入力a10fromに設定)、3何も返さずにスコープを終了します。

于 2012-12-31T10:59:23.857 に答える