什么是对象函数参数类型

时间:2016-09-09 01:59:43

标签: javascript arguments

我运行下面的代码,为什么这个结果

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

2 个答案:

答案 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仍未定义。