JavaScript数据类型
JavaScript数据类型
原始/基本数据类型(7种):
Number
String
Boolean
Undefined:undefined
Null:null
Symbol(ES6)
BigInt(ES10)
引用数据类型(1个):
- Object
JS 中万物皆对象
原始数据类型的数据直接存储在栈中,引用数据类型的数据存储在堆中,并把数据的起始地址存储在栈中。
undefined
如何得到安全的 undefined?
JS 比较松散,可以定义名为 undefined 的变量,这就导致固有的 undefined 值发生变化。
可以通过 void 获取安全的 undefined
1 | void 0; |
BitInt
BigInt值的定义:在一个整数字面量后面加 n 或使用构造函数。
1 | const theBiggestInt = 9007199254740991n; |
类型检测
typeof
instanceof
Object.prototype.toString.call()Array.isArray():专门用于检测数组
typeof
检测变量的前 3 位,最多 8 种。跟 JS 的数据类型并不一一对应。
特殊点:
可以检测出 function,可见 JS 中函数的地位很高。
检测不出 null,null 表示空对象,检测为
"object",感觉也是合理的。
| # | 返回值 | 被检测变量 | 说明 |
|---|---|---|---|
| 1 | number | 数字、NaN | NaN |
| 2 | string | 字符串 | |
| 3 | boolean | 布尔值 | |
| 4 | undefined | undefined | |
| 5 | symbol | ||
| 6 | bigint | ||
| 7 | object | 非函数对象、null | null 也是对象 |
| 8 | function | 函数 |
返回值是小写字符串。
typeof 的缺点:
- 不能区分对象和数组
- 不能判断对象的具体类型
instanceof
判断一个对象的原型链上是否有给定构造函数的原型(prototype)
1 | function _instanceof(obj, Fun){ |
Object.prototype.toString.call()
检测一个对象的内置类型,返回一个字符串,格式为 [object 对象数据类型]
1 | // [object String] |
参考
判断js对象类型的多种方法,附详细说明 - 掘金 (juejin.cn)

