下面的三个函数调用之后分别输出什么?function f1(x, y, a) { arguments[2] = 10; console.log(a);}f1(1, 2, 3);function f2(x, y, a) { arguments[2] = 10; console.log(a);}f2(1, 2);function f3(x, y, a) { arguments[2] = 10; console.log(arguments[2]);}f3(1,2);求分析:输出结果:第一次:10;第二次:undefined;第三次:10
1 回答
POPMUISE
TA贡献1765条经验 获得超5个赞
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
提交
取消