数组的基础类型和引用类型
js中允许出现的数据:number、string、boolean、null、undefined、{}、[]、function
根据不同类型的数据存储方式以及赋值方式的不同,我们将数据分为两类:基本类型和引用类型。
基础数据类型:number、string、boolean、undefined、null
引用数据类型:[]、function, {}
基础类型和引用类型的区别:
1.存储方式不同
基础类型将值存在栈内存中;引用类型将值存在堆内存中,将堆内存的内存地址存在栈中。
var a = 1;
var obj = {name:"张三",age:12}
2.赋值过程不同
基础类型赋值时,将值复制给另一个变量;引用类型赋值时,将栈中的地址复制给别的变量。
var a = 1
var b = a;
a = 2;
console.log(b) // 2
复制值以后,修改其中一个,另一个不会受到影响。
var arr = ['a','b','c'];
var brr = arr;
arr[0] = 'd'
console.log(brr) // ['d','b','c'];
当改变其中一个变量中的值,另一个变量中的值也会发生改变。
3.全等的比较规则不同
基础类型全等比较的时候,比较类型和值;
var a = 1;
var b = 1;
console.log(a === b)
引用类型全等比较的时候比较栈中存的内存地址是否相同。
var arr = [1,2,3];
var brr = [1,2,3]
console.log(arr === brr)