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

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

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

杨魅力 2018-12-27 22:19:27
下面的三个函数调用之后分别输出什么?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的内存


查看完整回答
反对 回复 2019-01-07
  • 1 回答
  • 0 关注
  • 431 浏览
慕课专栏
更多

添加回答

举报

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