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

因为您将第三个参数设置为 10。来自MDN

您可以使用 arguments 对象在函数中引用函数的参数。该对象包含传递给函数的每个参数的条目,第一个条目的索引从 0 开始。例如,如果一个函数传递了三个参数,您可以按如下方式引用该参数:

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

arguments 对象是所有函数中可用的局部变量;不能再使用作为 Function 属性的参数

使用此参考进一步

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

于 2012-12-31T11:06:03.990 回答
1

此函数接受三个输入,丢弃前两个并在模式弹出窗口中显示最后一个,但在将值分配10给 index 2of之前arguments- 有效地将输入设置a10from 3- 然后它退出范围而不返回任何内容。

于 2012-12-31T10:59:23.857 回答