下面的三个函数调用之后分别输出什么?functionf1(x,y,a){arguments[2]=10;console.log(a);}f1(1,2,3);functionf2(x,y,a){arguments[2]=10;console.log(a);}f2(1,2);functionf3(x,y,a){arguments[2]=10;console.log(arguments[2]);}f3(1,2);求分析:输出结果:第一次:10;第二次:undefined;第三次:10
2 回答
绝地无双
TA贡献1946条经验 获得超4个赞
arguments是伪值,它是传入函数参数的值组成的数组,它的顺序和参数列表一致,且可以在函数内被重写arguments中,每一个值都是指向参数本身的内存,而并非是副本函数内arguments,其实就是取到了[x,y,a]其中,arguments[2]对应的是a,且直接指向a的内存因此,第一个函数输出10,因为修改arguments[2]也就是修改a的内存,也就是对a赋值10第二次,由于没有传a,所以arguments[2]没有指向任何内存,且a也没有指定内存,因此是undefined第三次,由于arguments[2]没有指向任何内存,a也没有指定内存,所以,arguments[2]实质是给arguments[2]开辟了一块内存,并初始化值为10,但是这块内存并不是a的内存
添加回答
举报
0/150
提交
取消