JS踩坑

作者: 方_糖 | 来源:发表于2019-08-12 15:09 被阅读0次
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直接返回的是新数组

*********************************生命不息,踩坑不止************************************

相关文章

网友评论

      本文标题:JS踩坑

      本文链接:https://www.haomeiwen.com/subject/ftjujctx.html