定义
基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象。
基本类型值
· string 类型
· number 类型
· boolean 类型
· null 类型
· undefined 类型
· symbol 类型
· object 类型
引用类型值
· object Object 类型
· object Array 类型
· object Date 类型
· object RegExp 类型
· object Function 类型
· object Boolean 类型
· object Number 类型
· object String 类型
· object Set 类型
· object Map 类型
· 其他各种内置类型以及各种自定义类型
原始值和引用值的区别
原始值的数据存在栈中,原始值相互赋值就相当于拷贝,其中改变某一个变量的值,结果改变;而引用值的数据存在堆内存heap中,栈存放着目标堆内存的地址,引用值的相互赋值就相当于地址的赋值,指向同一个堆内存,之后结果不变。
Javascript把内存划分成两种:一种是栈内存,一种是堆内存。
栈内存
先进后出。主要存放一些基本类型的变量和对象的引用(基本类型值在内存中占据固定大小的空间,因此被保存在栈内存中,会自动释放)
堆内存
队列优先,先进先出。用于复杂数据类型(引用类型)分配空间,例如数组对象、object对象(引用类型的值通常大小不固定,所以被存储在堆内存中,不会自动释放)
两者区别
堆内存是运行时动态分配内存的,因此存取速度较慢。而栈内存存取速度比堆要快,并且栈内的数据可以共享。栈内存中的变量一般都是已知大小或者有范围上限的,相当于一种简单存储。而堆内存存储的对象类型数据对于大小这方面,一般都是未知的。