一、原始类型(Primitive Types)
JavaScript共有 7种原始数据类型,其中6种为基础类型:

特殊说明:
null
的typeof
返回"object"
(纯纯语言bug,null本身就是一个基础类型)NaN !== NaN
,需用Number.isNaN()
检测- 另外的BigInt字面量必须带
n
后缀
二、对象类型(Object Types)
所有非原始类型的值都是对象,包含 9大核心内置对象:
1. Object
javascript
// 对象基类
const obj = new Object();
const literalObj = {};
2. Array
javascript
// 数组对象
const arr = new Array(3);
const literalArr = [1, 2, 3];
3. Function
javascript
// 函数对象
const func = new Function('a', 'b', 'return a + b');
function sum(a, b) { return a + b; }
4. Date
javascript
// 日期时间处理
const now = new Date();
console.log(now.toISOString()); // "2023-08-20T08:30:00.000Z"
5. RegExp
javascript
// 正则表达式对象
const regex = new RegExp('\\d+', 'g');
const literalRegex = /\d+/g;
6. Error
javascript
// 错误对象体系
try {
throw new Error('Custom message');
} catch (e) {
console.log(e instanceof Error); // true
}
7. Math
javascript
// 数学工具对象(单例)
console.log(Math.PI); // 3.141592653589793
console.log(Math.random()); // 0~1随机数
8. Promise
javascript
// 异步操作容器(ES6)
const promise = new Promise((resolve) => {
setTimeout(() => resolve('Done'), 1000);
});
总结图:

三、类型系统特征
1. 包装对象(Wrapper Objects)
原始类型可通过构造函数临时包装为对象:
javascript
const strPrimitive = "hello";
const strObject = new String(strPrimitive);
console.log(typeof strPrimitive); // "string"
console.log(typeof strObject); // "object"
2. 类型检测方法对比

3. 类型转换规则
javascript
// 显式转换
Number("123"); // 123
String(true); // "true"
Boolean([]); // true
// 隐式转换
"5" + 3 = "53" // 字符串拼接
"5" - 3 = 2 // 数字运算
四、特殊对象类型
1. 全局对象
- 浏览器环境:
window
- Node.js环境:
global
- ES2020新增:
globalThis
2. 类型化数组
javascript
// 二进制数据处理
const buffer = new ArrayBuffer(16);
const int32View = new Int32Array(buffer);
3. 集合对象
javascript
// ES6新增数据结构
const map = new Map();
const set = new Set();
五、最佳实践建议
-
优先使用字面量语法:
javascript// Good const arr = []; const obj = {}; // Bad const arr = new Array(); const obj = new Object();
-
严格类型检查:
javascript// 检测数组类型 Array.isArray(someVar); // 检测NaN Number.isNaN(someVar);
-
避免隐式类型转换:
javascript// 使用全等运算符 if (x === 42) { ... } // 显式转换 const num = parseInt(str, 10);//如果第一个字符无法转换,则返回NaN
理解JavaScript类型体系是掌握语言核心的关键,开发者应特别注意原始类型与对象类型的本质区别,合理选择数据类型和操作方法。