JavaScript 中的原始值(undefained、null、布尔值、数字和字符串)与引用值(对象,数组,函数等)有着根本的区别。
存储方式
- 原始值
- 存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。
- 引用值
- 存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处。
为变量赋值时,JavaScript 的解释程序必须判断该值是原始类型,还是引用类型。要实现这一点,解析程序则需尝试判断该值是否为 JavaScript 的原始类型之一,即 Undefined、Null、Boolean、Number 和 String 型。由于这些原始类型占据的空间是固定的,所以可将他们存储在较小的内存区域——栈中。这样存储便于迅速查寻变量的值。