-
原始类型:
Boolean Number String Null Undefined Symbol(ES6新增)
-
复杂数据类型:
Object
-
ES10新增了一种基本数据类型:
BigInt
-
null是不是对象?
null不是一个对象,尽管 typeof null === “object”, 这是一个历史遗留问题,原理是不同的对象在底层都是用二进制来表示的,在js中二进制前三位是0既判断为对象,null的二进制表示全是0,即前三位都是0,所以执行typeof(null)的时候返回object,实际上null是基本数据类型。
-
基本数据类型和复杂数据类型的区别:
内存分配不同
基本数据类型存储在栈中。 复杂数据类型存储在堆中,栈中存储的地址,是指向堆中的引用地址,属性及值存储在堆中。
访问机制不同
基本数据类型是按值访问 复杂数据类型是按引用访问,JS不允许直接访问保存在堆内存中的对象,在访问一个对象时,首先得到的是这个对象在栈内存中的地址,然后按照这个地址去获得存储在堆中的值。
赋值方式不同
基本数据类型作为参数时,修改基本数据类型的参数不影响原有数据,复杂数据类型,是通过引用地址来访问的,所以作为参数时,修改 属性后,会影响原有数据。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。