JavaScript 的 7 种原始数据类型是 string、number、boolean、undefined、null、symbol、bigint,它们不可变、按值传递、存于栈内存;object 是唯一引用类型,其余如 array 等均为其派生。

JavaScript 中的 7 种原始数据类型是:string、number、boolean、undefined、null、symbol、bigint。
它们是语言中最底层、不可再分的值类型,直接存储在栈内存中,按值传递,且不可变。
string(字符串)
表示文本数据,用单引号、双引号或反引号定义。
-
'hello'、"world"、`template ${value}`都是合法 string - 空字符串
''是有效的 string - 字符串内容不能被直接修改(如
str[0] = 'H'无效),所有“修改”方法(如toUpperCase())都返回新字符串
number(数字)
统一为 IEEE 754 双精度 64 位浮点数,涵盖整数、小数、Infinity、-Infinity 和 NaN。
立即学习“Java免费学习笔记(深入)”;
-
42、3.14、-0、Infinity、NaN都属于 number -
0.1 + 0.2 !== 0.3是浮点精度导致的典型表现 - 注意:
NaN !== NaN,判断需用Number.isNaN()或Object.is(value, NaN)
boolean(布尔值)
只有两个字面量:true 和 false。
- 不要混淆
'true'(字符串)、1(数字)与true(布尔) - 在条件判断中,
0、''、null、undefined、NaN、false被视为 falsy,但它们本身不是 boolean
undefined(未定义)
表示变量已声明但未赋值,或对象无该属性,或函数无 return。
-
let x; console.log(x); // undefined -
typeof undefined返回'undefined' - 它是 JavaScript 的初始“空缺”状态,语义上不同于
null
null(空值)
表示开发者主动赋予的“空对象引用”,即“此处本应有对象,但现在什么也没有”。
-
let obj = null;是常见写法 -
typeof null返回'object'——这是历史遗留 bug,已标准化,不会修复 - 判断时推荐用严格相等:
value === null
symbol(符号)
ES6 引入,用于创建唯一、不可变的标识符,主要解决对象属性名冲突问题。
-
Symbol('desc') !== Symbol('desc'),每次调用都生成新值 - 常作为对象属性键:
const key = Symbol('id'); obj[key] = 123; - 不会被
for...in或Object.keys()枚举,需用Object.getOwnPropertySymbols()获取
bigint(大整数)
ES2020 引入,用于表示任意精度的整数,避免 number 类型的精度丢失。
- 必须以
n结尾:123n、0n、BigInt('9007199254740991') - 不能与 number 混合运算(如
123n + 456报错),需显式转换 -
typeof 123n返回'bigint',它和 number 是不同类型
object 不属于原始类型,它是唯一的引用类型,其他如 array、function、date、map 等都是 object 的派生。


















