在js中,数据类型包括两种:基本类型(6种,数字number,字符串string,布尔boolean,null,undefined,Symbol)和引用类型(对象,数组,函数)
赋值
基本类型的数据拷贝,会重新开辟一个空间存放拷贝的值,它是放置在栈中的,这种我们一般称为赋值 如下所示:
var num = 100;
var str = "itclanCoder";
var bol = true;
var nul = null;
var unde = undefined;
var sym = Symbol;
num1 = num;
str1 = str;
bol1 = bol;
console.log(num,str,bol,nul,unde,sym,num1,str1,bol1);
num1 = 200;
str1 = "川川";
bol1 = false
console.log(num,str,bol,nul,unde,sym,num1,str1,bol1);
num = 300;
str = "web";
bol = false;
console.log(num,str,bol,nul,unde,sym,num1,str1,bol1);
显示结果如下所示
而对应的就是复杂类型的拷贝,拷贝下来的只是指向存放数据空间的指针 类似这种拷贝数据的行为称为赋止(拷贝的是地止)
var a = [1,2,3,4];
b = a;
console.log(a)
console.log(b);
当你尝试着改变b[0]=100时,此时a数组也发生改变了的,这就是浅拷贝了的 因为它们指向的都是同一个地止,所以当地止中的数据发生改变,指向该存放的地止的所有变量都会发生改变