一: 分类
基本数据类型:string,number, boolean,null,undefined,symbol(es6)
引用数据类型(复杂数据类型):array,object,function, 正则
二:区别:
1:基本数据类型存储在栈内存中;
2:引用数据类型存储在堆内存中,存放的是具体内容的引用地址,可根据引用地址快速查到对象;
3:基本数据类型比较的是值;var a= 'bb' var b='bb' console.log(a == b) => true
4: 引用数据类型比较是引用比较;var a= [] var b= [] console.log(a == b) => false
5: 基本数据类型赋值是简单赋值;var a= 10; var b=a; a++; console.log(a,b)=> 11, 10 a,b是两个不同的内存,完权独立的,不会相互影响;
6:引用类型赋值是对象引用;var a= {age: 15}; var b=a; console.log(b.age) => 15;当一个变量向另一个变量赋值引用类型的值时,同样也会将栈内存中的值复制一份放到新变量分配的空间中,但是引用类型保存在栈内存中的变量是一个地址,这个地址指向的是堆内存中的对象,两个地址指向同一个对象,改变其中任何一个变量都会互相影响。