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

遇到了数组push的问题求解答

遇到了数组push的问题求解答

慕虎7371278 2018-12-10 13:19:20
var a = [1,2,3];var b = a;b.push(4);alert(b);这里输出的结果为什么是[1,2,3,4]呢?为什么会修改了原数组的值呢? var a = [1,2,3];  var b = a;  b = [1,2,3,4];   alert(a);  这个题目和上面的有什么区别呢?                
查看完整描述

1 回答

?
30秒到达战场

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

首先第一个问题,是js除开基本类型的引用传递,所以在


var a = [1,2,3];    //a存储的是一个内存地址x,该地址存放的内容是[1,2,3]

var b = a;        //将a所指向的内存地址x赋值给b

b.push(4);        //在内存地址x指向的数据中增加元素4

其过程是 x => [1,2,3] x => [1,2,3,4] "=>"表示指向内存


第二个问题和第一个问题的区别在于对于b的再次赋值


b = [1,2,3,4]; //清空原有内存地址x中存放的数据,重新赋值为[1,2,3,4]

这段代码的过程: x => [1,2,3] x => null x => [1,2,3,4]

在这个过程中,因为a b都是指向内存地址x,所以不管是a还是b重新赋值后,改变的都是该内存地址的数据,所以

a=x=>[1,2,3,4]

b=x=>[1,2,3,4]


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

添加回答

举报

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