一、数据类型
1、原始类型(Primitive Types)
- Number(数字)
- 整数和浮点数
- 特殊值:
Infinity
、-Infinity
、NaN
- 示例:
let age = 25; let price = 99.99;
- String(字符串)
- 文本数据
- 可以使用单引号、双引号或反引号
- 示例:
let name = "Alice"; let msg = 'Hello';
- Boolean(布尔值)
- 逻辑值:
true
或false
- 示例:
let isActive = true;
- 逻辑值:
- Undefined
- 表示变量已声明但未赋值
- 示例:
let x; console.log(x); // undefined
- Null
- 表示空值或"无"的对象引用
- 示例:
let empty = null;
- Symbol(符号,ES6新增)
- 唯一且不可变的值,常用作对象属性的键
- 示例:
let sym = Symbol('description');
- BigInt(大整数,ES2020新增)
- 表示大于2^53-1的整数
- 示例:
const bigNum = 1234567890123456789012345678901234567890n;
2、对象类型(Object Types)
- Object(对象)
- 键值对的集合
- 示例:
let person = { name: "Bob", age: 30 };
- Array(数组)
- 有序的数据集合
- 示例:
let colors = ["red", "green", "blue"];
- Function(函数)
- 可执行的对象
- 示例:
function greet() { console.log("Hello!"); }
- 其他特殊对象
- Date(日期)
- RegExp(正则表达式)
- Map/Set(ES6新增集合类型)
- Promise(异步操作)
- 等等
3、类型特点比较
特性 | 原始类型 | 对象类型 |
---|---|---|
存储方式 | 直接存储在栈内存 | 存储在堆内存,栈存引用地址 |
访问方式 | 按值访问 | 按引用访问 |
复制行为 | 复制实际值 | 复制引用地址 |
比较方式 | 比较值是否相等 | 比较引用是否指向同一对象 |
4、类型检测方法
-
typeof 操作符
typeof 42; // "number" typeof "hello"; // "string" typeof true; // "boolean" typeof undefined; // "undefined" typeof null; // "object" (历史遗留问题) typeof Symbol(); // "symbol" typeof {}; // "object" typeof []; // "object" typeof function(){};// "function"
-
instanceof 操作符(检测对象类型)
[] instanceof Array; // true {} instanceof Object; // true
-
Array.isArray()(专门检测数组)
Array.isArray([]); // true