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

查看:87
本文介绍了javascript - 遇到了数组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);
  这个题目和上面的有什么区别呢?
                

解决方案

首先第一个问题,是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]

这篇关于javascript - 遇到了数组push的问题求解答的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆