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

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);

  这个题目和上面的有什么区别呢?

                


慕虎7371278
浏览 452回答 1
1回答

30秒到达战场

首先第一个问题,是js除开基本类型的引用传递,所以在var a = [1,2,3];    //a存储的是一个内存地址x,该地址存放的内容是[1,2,3]var b = a;        //将a所指向的内存地址x赋值给bb.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]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript