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

大佬们遇到过这个问题吗?请指教下为啥输出的不是[1,2,3]

大佬们遇到过这个问题吗?请指教下为啥输出的不是[1,2,3]

慕容3067478 2019-08-30 01:39:18
vara=[1];functionf(a){a[100]=3;a=[1,2,3];}f(a)console.log(a);
查看完整描述

2 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

这是面向对象和形参的问题啦,js里的数组也是对象。
一步一步的看:
vara=[1]//a指向objectX,objectX的内容是`[1]`
functionf(a){
//这里的a是形参,你把它换成b也没什么不同,b也指向objectX,objectX的内容是`[1]`
a[100]=3//b还指向objectX,objectX的内容变成了`[1,...,3]`
a=[1,2,3]//b指向了objectY了,objectY的内容是`[1,2,3]`
}
f(a)
console.log(a)//a指的还是objectX
如果你把fn(a)换成fn(),结果就会和你期待的一样了。
                            
查看完整回答
反对 回复 2019-08-30
  • 2 回答
  • 0 关注
  • 314 浏览
慕课专栏
更多

添加回答

举报

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