1. 数组和对象是通过引用来赋值
- 先看下面栗子
var arr=[1,2];
var newArr=arr;
newArr[0]=0;
console.log(arr); //[0,2]
简单的说:
number,string类型都是基本类型,而基本类型存放在栈区,访问时按值访问,赋值是按照普通方式赋值;对象和数组是通过引用来赋值的,所以改变arr的同时newArr也会跟着改变。
- 解决办法
var newArr = arr.slice(0);
newArr[0]=0;
console.log(arr); //[1,2]
因为slice直接返回的是新数组
*********************************生命不息,踩坑不止************************************
网友评论