为了账号安全,请及时绑定邮箱和手机立即绑定

三个函数调用之后分别输出什么?

三个函数调用之后分别输出什么?

梦里花落0921 2019-05-25 13:20:44
下面的三个函数调用之后分别输出什么?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的内存
                            
查看完整回答
反对 回复 2019-05-25
  • 2 回答
  • 0 关注
  • 659 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信