javascript七大原始类型是string、number、boolean、undefined、null、symbol和bigint;它们不可变、按值传递、直接存于栈内存,typeof可识别除null外的所有类型,判null须用===。

JavaScript 七大原始数据类型到底有哪些
JavaScript 当前标准定义了七种原始(primitive)数据类型:string、number、boolean、undefined、null、symbol 和 bigint。它们是语言中最基础的值单元,直接存于栈内存,不可变、按值传递。注意,object 不属于原始类型,它是唯一的引用类型,而 typeof null 返回 'object' 是历史遗留问题,并不改变 null 的原始类型本质。
每种类型的关键特征和常见误区
理解它们不能只记名字,得抓住行为差异:
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
-
string:用单引号、双引号或反引号定义;空字符串
''是合法 string;'123'是字符串,不是数字,加法会拼接而非计算 -
number:统一为双精度64位浮点数;包含
Infinity、-Infinity和NaN;0.1 + 0.2 !== 0.3是典型精度表现;NaN !== NaN -
boolean:仅
true和false;注意'false'、0、''等在 if 中转为 false,但它们本身不是 boolean -
undefined:变量声明未赋值、对象无该属性、函数无 return 时的默认值;
typeof undefined正确返回'undefined' -
null:开发者主动赋的“空值”,语义上表示“有意为空”;
typeof null === 'object'是规范保留的怪异行为,检测应使用value === null -
symbol:每次
Symbol()调用都生成唯一值;相同描述的 symbol 也不相等;主要用于对象属性键防冲突 -
bigint:以
n结尾(如123n);用于安全表示大于2⁵³−1的整数;不能与 number 混合运算,否则报错
怎么判断和区分它们
最可靠的方式是组合使用 typeof 和严格相等:
-
typeof 'abc'→'string',typeof 42→'number',typeof true→'boolean' -
typeof undefined→'undefined',但typeof null→'object',所以判 null 必须写value === null -
typeof Symbol()→'symbol',typeof 123n→'bigint' - 对所有原始类型,
Object.prototype.toString.call(value)可统一返回精确标识,如[object String],适合工具函数封装
为什么原始类型“不可变”很重要
不可变性决定了它们的行为边界:
- 字符串方法如
toUpperCase()、slice()都返回新字符串,原值不变 - 数字运算产生新值,不会修改原变量;
let a = 5; a++是先读取再赋新值,不是“修改内存中的 5” - 赋值和传参都是值拷贝,两个变量互不影响;这和 object 的引用传递形成根本对比
- 正因为不可变,JS 引擎可安全优化、缓存原始值,比如小数字和短字符串常被内部复用
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










