变量引用地址和值?

变量引用地址和值?

var a =[4];

var b =a;

a = [4,44]

console.log(b)

a =b

b.push(44)

console.log(a)

结果为什么是[4],[4,44];

引用不知只改变地址吗,为什么前面的那个还是【4】?,按照改变引用地址的理解后面那个push后改变的了原数组b,然后b的地址给a,a就为【4,44】可以这样理解么?  但是前面那个怎么理解,a的值不是被修改了吗?

正在回答

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

1回答
DW 回答被采纳获得+3积分 2017-09-19 09:58:20

var a =[4];

var b =a; //b =[4]

a = [4,44]; //a = [4,44],a新开辟一个引用地址

console.log(b); //b =[4],因为a新开辟了一个引用地址,并没有影响到b,所以现在b还是为[4]

a =b; //a = [4],将b的地址赋给a

b.push(44); //b = [4,44],同一个引用地址,b的改变必将使a改变,a由原来的a=[4]改变为a=[4,44]

console.log(a); //所以现在a为a = [4,44]

//以上为本人自己的理解,如有不对的地方,还请多多批评

  • 慕粉0058026319 提问者 #1
    非常感谢!测试了一下 var a=[4] 到 a=[4,44]确实是改变了数组的引用,指向一个新的数组,相当于新new Array()了一个数组
    2017-09-21 10:59:57
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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