1、基本数据类型
JavaScript中的变量可能包含两种不同数据类型的值:基本数据类型和引用数据类型。
JavaScript中一共有5种基本数据类型:String、Number、Boolean、Undefined、Null。
基本数据类型的值是无法修改的,是可不变的。
基本数据类型的比较是值的比较,也就是两个变量的值相等,我们就认为这两个变量相等。
2、引用数据类型
引用类型的值是保存在内存中的对象。
当一个变量是一个对象时,实际上变量种保存的并不是对象本身,而是对象的引用。
当从一个变量向另一个变量复制引用类型的值时,会将对象的引用复制到变量中,并不是创建一个新的对象。
这时,两个变量指向的是同一个对象。因此,改变其中一个变量会影响另一个。
3、栈和堆梳理
JavaScript在运行时数据是保存到栈内存和堆内存当中的。
简单来说栈内存用来保存变量和基本类型,堆内存是用来保存变量。
我们在声明一个变量时,实际上就是在栈内存中创建一个空间用来保存变量。
如果是基本类型则在栈内存中直接保存,如果是引用类型则会在堆内存中保存,变量中保存的实际上对象在堆内存中的地址。