3-4选择题 第三题

3-4选择题 第三题

没理解错的话a,b指向同一对象,因为a变为[4,44],故b也同样,所以打印b为【4,44】但答案并非如此,为什么?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
提问者 慕瓜9363615 2017-09-29 17:22:21
 var a=[4];
 var b=a;
 a=[4,44];
 
 b.push(100);
 
 document.write(a);

这是我写的代码,最后打印出来为4,44 而不是  4,100,是因为a新开了一个引用地址,所以不受b影响了吗?

  • a=[4,44],是a又指向了另一个数组对象,此时a和b是不相等的,所以b还是[4],而下面的b.push(44),并没有改变数组对象引用,所以a=b=[4,44]。祝学习愉快!
    2017-09-29 18:08:55
卡布琦诺 2017-09-29 17:01:31

这里从一个变量向另一个变量复制引用类型的值,复制的其实是指针,因此两个变量最终都指向同一个对象。当给变量赋新值时,此变量就不再指向原来的对象了

希望可以帮到你,祝学习愉快!

  • 提问者 慕瓜9363615 #1
    var a=[4]; var b=a; a=[4,2]; b.push(100); document.write(a); 这是我写的代码,最后打印出来为4,44 而不是 4,100,是因为a新开了一个引用地址,所以不受b影响了吗?
    2017-09-29 17:23:25
  • 卡布琦诺 回复 提问者 慕瓜9363615 #2
    a=[4,44],是a又指向了另一个数组对象,此时a和b是不相等的,所以b还是[4],。而下面的b.push(44),并没有改变数组对象引用,所以a=b=[4,44]。祝学习愉快!
    2017-09-29 18:09:31
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

进击JavaScript核心 2018
  • 参与学习       466    人
  • 提交作业       74    份
  • 解答问题       635    个

JavaScript不仅能实现静态页面到动态特效的转变,还能完成数据的动态交互,但是关于js到底功能有多强大,大家还是有所期待的,本路径将带你深入到js中,一一揭开JavaScript的神秘面纱。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师