JavaScript不支持任何创建自定义类型的机制,而所有值最终都将是下列8种数据类型之一
- 7种 基本数据类型 --- Undefined、Null、Boolean、Number、String、Symbol(es6新增)和BigInt(es10新增)。
- 1种 引用数据类型 --- Object(Object本质上是由一组无序的名值对组成的)。里面包含 function、Array、Date等。
基本数据类型
值直接存储在栈(stack)中,占据空间小、大小固定。
-
Number:用于表示整数和浮点数,还包括特殊值,如
NaN
(非数字)和Infinity
(无穷大)。 -
String:用于表示文本数据,由零个或多个 16 位 Unicode 字符组成。字符串可以用单引号
'
、双引号"
或反引号`````表示。 -
Boolean:只有两个值,即
true
和false
,常用于条件判断。 -
Null:只有一个值
null
,表示一个空对象指针,通常用于显式地表示一个变量没有值。 -
Undefined:当变量已声明但未赋值,或者函数没有返回值时,变量的值就是
undefined
。 -
Symbol:ES6(2015) 引入的新数据类型,用于创建独一无二的值,常被用作对象的属性名,以避免属性名冲突。示例:
const s1 = Symbol('demo'); const s2 = Symbol('demo'); console.log(s1 === s2); // 输出: false
-
BigInt:ES10(2020) 引入的数据类型,用于表示任意大的整数。可以在整数后面加n来创建BigInt类型的值。示例:
const bigNumber = 123456789012345678901234567890n;
引用数据类型
指针和实体值分别存储在栈(stack)和堆(heap)中,占据空间大、大小不固定。在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。
- Object:是 JavaScript 中最常用的引用数据类型,可以用于存储各种数据,以键值对的形式组织。除了普通对象,还有一些特殊的引用数据类型,如Array、Function、Date等,它们本质上也是对象,只是具有特定的功能和行为。