种别:6种:Number、Boolean、String、Null、Undefined、Objext。
分类:两类,一类基本数据类型(前五种),一类复杂数据类型(Object)。
区别:
基本数据类型:
- 定义:简单的数据段,不可添加属性和方法;
- 存放:把数据名和值直接存在栈区;
- 比较:实际值;
- 内存分配:按值访问,可直接操作保存在变量中的实际值;
- 复制变量:两个变量完全独立,只是拥有相同的值;
- 参数传递:只把变量里的值传递给参数,之后参数和变量互不影响;
复杂数据类型:
- 定义:由多个值构成的对象;
- 存放:在栈中存数据名和一个堆的地址,在队中存属性及值,访问时先从栈中获得地址,再到堆中拿出相应的值;
- 比较:地址;
- 内存分配:存储的是指针,指向存储对象的内存地址;只能操作对象在堆内存中的引用地址;
- 复制变量:两个变量指向堆内存中的同一个对象,改变其中一个,另一个也跟着改变;
- 参数传递:对象变量的值是堆的内存地址,传参也是传此内存地址。