我运行下面的代码,为什么这个结果
function show(a,b) {
arguments[0] = 10;
arguments[1] = 20;
console.log(a,b);
}
show();//undefined undefined
show(2);//10 undefined
看看这段代码,为什么?有什么不同[10] [0:10]?此代码在浏览器中运行
function show(a) {
console.log(arguments);
arguments[0] = 10;
console.log(arguments)
console.log(a);
}
show();//[] [0: 10] undefined
show(2);//[2] [10] 10
答案 0 :(得分:0)
基于关于arguments的MDN说明:
arguments对象是一个类似于Array的对象 传递给函数的参数。
并且:
此对象包含传递给的每个参数的条目 function,从0开始的第一个条目索引
所以使用你的函数 arguments [0] 如果在函数中传递,则引用变量 a ,当你指定参数[0]时,这意味着你分配对于变量a。
希望这有帮助。
从 torazaburo更新回复:
如果未传入a(如show()),则参数[0]不会为别名 到a,设置参数[0]对a没有影响;一个未定义的遗骸 在这种情况下。
答案 1 :(得分:0)
function show(a,b) {
arguments[0] = 10;
arguments[1] = 20;
console.log(a,b);
}
如果未传递a
(如show()
中所述),则arguments[0]
会对a
执行不别名,并设置{{ 1}}对arguments[0]
没有影响;在这种情况下,a
仍未定义。