JavaScript 的数据类型可分为值类型(基本类型)和引用数据类型两种:
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
注:*Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。
*不能用JS算精度高的运算
两者的区别?
一、值类型(基本类型):栈内存
Top1:修改
var a=123;
var b=a;
a++;
console.log(a);
console.log(b);
分别返回124、123(只是修改了a的值)
Top2:比较
var a=123;
var b=123;
console.log(a==b);
该结果返回true
二、引用数据类型(对象):堆内存
Top1:修改
var obj1=new Object();
obj1.name="wang";
var obj2=obj1;
console.log(obj1.name);
console.log(obj2.name);
此时对象obj1和obj2均返回“wang”
如果修改obj1属性值为“li”:
var obj1=new Object();
obj1.name="wang";
var obj2=obj1;
obj1.name="li";
console.log(obj1.name);
console.log(obj2.name);
此时对象obj1和obj2均返回“li” (相当于修改了堆内存地址,所以obj1和obj2都变了)
Top2:比较
var obj1=new Object();
obj1.name="wang";
var obj2=new Object();
obj2.name="wang";
console.log(obj1==obj2);
该结果返回false,虽然两个对象一模一样,但却是占用不同的地址空间,所以并不相等