在 JavaScript 中,数据类型可以分为两大类:原始数据类型(Primitive Types) 和引用数据类型(Reference Types)。
一、原始数据类型(Primitive Types)
原始数据类型的值是不可变的,直接存储在栈内存中。JavaScript 中有 7 种原始数据类型:
-
Number
表示整数和浮点数,例如:42,3.14。还包括特殊值:NaN(非数字)、Infinity(无穷大)。 -
String
表示文本数据,例如:"Hello",'World'。可以使用单引号、双引号或反引号(模板字符串)定义。 -
Boolean
表示逻辑值:true或false。 -
Undefined
表示变量已声明但未赋值,只有一个值:undefined。 -
Null
表示空值,只有一个值:null。注意:typeof null返回"object"(这是历史遗留 bug)。 -
Symbol(ES6 新增)
表示唯一的、不可变的值,常用于对象属性的键。例如:Symbol('id')。 -
BigInt(ES2020 新增)
表示任意精度的整数,用于处理大于2^53 - 1的整数。例如:123n。
二、引用数据类型(Reference Types)
引用数据类型的值是可变的,存储在堆内存中,变量存储的是其内存地址。主要包括:
- Object
- 普通对象:
{ key: value } - 数组:
[1, 2, 3](本质是特殊对象) - 函数:
function() {}(可执行对象) - 日期:
new Date() - 正则表达式:
/pattern/ - 其他内置对象:如
Map,Set,WeakMap,WeakSet等。
- 普通对象:
三、注意事项
-
typeof操作符:用于检测数据类型,但有一些特殊情况:typeof 42; // "number" typeof "hello"; // "string" typeof true; // "boolean" typeof undefined; // "undefined" typeof null; // "object"(历史遗留问题) typeof Symbol(); // "symbol" typeof 123n; // "bigint" typeof {}; // "object" typeof []; // "object"(数组也是对象) typeof function(){}; // "function"(函数是特殊对象) -
类型判断技巧:
- 判断数组:
Array.isArray(arr)或arr instanceof Array - 判断
null:variable === null
- 判断数组:
四、总结表
| 类型 | 示例 | typeof 结果 |
|---|---|---|
| Number | 42, 3.14 | "number" |
| String | "hello" | "string" |
| Boolean | true, false | "boolean" |
| Undefined | undefined | "undefined" |
| Null | null | "object" |
| Symbol | Symbol('id') | "symbol" |
| BigInt | 123n | "bigint" |
| Object | {}, [], new Date() | "object" |
| Function | function(){} | "function" |
希望这个总结对你有帮助!如果有进一步问题,欢迎继续提问。