JavaScript中判断变量是否为原始类型值最可靠的方式是使用typeof操作符并单独处理null;原始类型共7种:string、number、boolean、undefined、null、symbol、bigint,其中null需用===单独判断,因typeof null返回"object"。

JavaScript 中判断变量是否为原始类型值,最可靠的方式是使用 typeof 操作符,并结合 null 的特殊处理。
原始类型的完整列表
JavaScript 有 7 种原始类型(primitive types):
string、number、boolean、undefined、null、symbol(ES6 新增)、bigint(ES2020 新增)。
注意:null 虽然逻辑上是原始值,但 typeof null === "object" 是历史遗留 bug,需单独判断。
用 typeof + 显式 null 判断
这是最常用且安全的做法:
-
typeof value === "string"→ 字符串 -
typeof value === "number"→ 数字(包括NaN和Infinity) -
typeof value === "boolean"→ 布尔值 -
typeof value === "undefined"→ 未定义 -
typeof value === "symbol"→ Symbol -
typeof value === "bigint"→ BigInt -
value === null→ 单独判断 null(不能依赖 typeof)
避免 instanceof 和 constructor
原始值没有构造器,也不继承自 Object,所以以下方式不可靠:
-
value instanceof String→ 对字符串字面量返回false -
value.constructor === String→ 原始字符串会自动包装,但null和undefined会报错 -
Object.prototype.toString.call(value)→ 可用于区分对象类型,但对原始值返回[object String]等,不如typeof直观简洁
封装一个 isPrimitive 工具函数
可复用的判断逻辑示例:
立即学习“Java免费学习笔记(深入)”;
function isPrimitive(value) {
return value === null ||
typeof value === "string" ||
typeof value === "number" ||
typeof value === "boolean" ||
typeof value === "undefined" ||
typeof value === "symbol" ||
typeof value === "bigint";
}
该函数覆盖全部 7 种原始类型,不依赖对象包装,也不触发隐式转换,结果稳定可靠。


















