为什么此功能会提醒10?
function b (x, y, a) {
arguments[2] = 10;
alert(a);
}
b(1, 2, 3);
答案 0 :(得分:9)
javascript数组是零索引的,而arguments指的是作为参数传递给函数的参数:
arguments[2] === a === 10
和
1 === x === arguments[0];
2 === y == arguments[1];
(而triple equality运算符不是错误的)
答案 1 :(得分:4)
因为您将第三个参数设置为10.来自MDN:
您可以使用函数引用函数中的函数参数 参数对象。该对象包含每个参数的条目 传递给函数,第一个条目的索引从0开始 例如,如果函数传递了三个参数,则可以参考 论点如下:
arguments[0] arguments[1] arguments[2]
答案 2 :(得分:3)
arguments对象是所有函数中可用的局部变量;作为Function属性的参数不能再使用
使用此参考资料进一步
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Functions_and_function_scope/arguments
答案 3 :(得分:1)
此函数接受三个输入,丢弃前两个输入并在模态弹出窗口中显示最后一个输入,但在将值10
分配给2
的索引arguments
之前不会 - 有效地设置输入来自a
的{{1}}到10
- 然后退出范围而不返回任何内容。