在 JavaScript 中,数据类型分为基本类型和引用类型。使用 typeof
运算符可以检查数据类型,但有一些特殊情况需要注意。
在 JavaScript 中,数据类型分为基本类型和引用类型。使用 typeof
运算符可以检查数据类型,但有一些特殊情况需要注意。
JavaScript 数据类型
1. 基本类型 (Primitive Types)
- 存储在栈中,按值访问。
- 包括以下 7 种类型:
number
:数字类型,包括整数和浮点数(如42
,3.14
)。bigint
:大整数类型(如123n
)。string
:字符串类型(如"hello"
)。boolean
:布尔类型(如true
,false
)。undefined
:表示变量未定义。null
:表示空值。symbol
:表示唯一标识符(如Symbol('id')
)。
2. 引用类型 (Reference Types)
- 存储在堆中,按引用访问。
- 包括:
- 对象 (
Object
):如{}
,new Object()
- 数组 (
Array
):如[]
,new Array()
- 函数 (
Function
):如function() {}
,() => {}
- 日期 (
Date
):如new Date()
- 正则表达式 (
RegExp
):如/abc/
,new RegExp('abc')
- 其他对象类型:如
Map
,Set
,WeakMap
,WeakSet
等。
- 对象 (
typeof
检查
返回值
typeof
返回一个字符串,表示操作数的数据类型。
数据类型 | typeof 返回值 |
---|---|
number | "number" |
bigint | "bigint" |
string | "string" |
boolean | "boolean" |
undefined | "undefined" |
symbol | "symbol" |
null | "object" ⚠️ |
object | "object" |
function | "function" |
特殊情况
-
null
返回"object"
- 历史遗留问题,
typeof null
返回"object"
。 - 可以用
x === null
检查是否为null
。
- 历史遗留问题,
-
array
返回"object"
- 数组是对象,
typeof []
返回"object"
。 - 使用
Array.isArray()
检查数组。
- 数组是对象,
-
function
返回"function"
- 函数是对象的特殊类型,但
typeof
会单独返回"function"
。
- 函数是对象的特殊类型,但
-
NaN
返回"number"
NaN
是数字类型,typeof NaN
返回"number"
。- 使用
Number.isNaN()
检查是否为NaN
。
-
symbol
typeof Symbol()
返回"symbol"
。