最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
JavaScript 中 如何 使用 typeof 运算符 检测 七种 原始 类型
时间:2026-07-09 11:42:03 编辑:袖梨 来源:一聚教程网
JavaScript仅有六种原始类型(string、number、boolean、undefined、symbol、bigint),typeof能准确识别它们,但对null返回"object"是历史bug;函数返回"function",其他对象统一返回"object",需结合=== null、Array.isArray()或Object.prototype.toString.call()进行精确判断。
JavaScript 中 typeof 运算符能准确识别六种原始类型(primitive types),但对 null 的检测结果是 "object",这是历史遗留 bug,并非第七种原始类型——JavaScript 实际只有六种原始类型:string、number、boolean、undefined、symbol、bigint(ES2020 新增),而 null 是独立的特殊值,不属于原始类型,也不属于对象。
typeof 能正确识别的六种原始类型
typeof 对以下六类值返回对应字符串,行为一致且可靠:
-
string:如
typeof "hello"→"string" -
number:如
typeof 42→"number"(包括NaN和Infinity) -
boolean:如
typeof true→"boolean" -
undefined:如
typeof undefined→"undefined";未声明变量用typeof不报错,也返回"undefined" -
symbol:如
typeof Symbol("id")→"symbol" -
bigint:如
typeof 123n→"bigint"(注意末尾n字面量)
typeof null 返回 "object" 是陷阱
typeof null 返回 "object",这不符合直觉,也容易引发误判。它源于 JavaScript 最初实现时的二进制标识 bug,已成事实标准,无法更改。
若需区分 null,必须额外判断:
立即学习“Java免费学习笔记(深入)”;
- 不要依赖
typeof x === "object"来断定是对象——null也会命中 - 安全检查
null应写为:x === null(严格相等) - 若要统一判断“是否为纯对象(非 null、非原始值)”,可用:
typeof x === "object" && x !== null
function 和 object 的区分要点
typeof 对函数返回 "function",这是 ECMAScript 规范特例(尽管函数本质是对象):
-
typeof function(){}→"function" -
typeof new Date()→"object" -
typeof []、typeof {}、typeof /regex/均返回"object" - 因此
typeof无法区分数组、正则、普通对象等,需配合Array.isArray()或Object.prototype.toString.call()
实际类型检测建议
仅靠 typeof 不足以完成健壮的类型判断。推荐组合策略:
- 原始类型优先用
typeof(除null外都准确) -
null单独用=== null - 对象子类型(Array、Date、RegExp 等)用
instanceof或toString方法 - 需要完整类型名时,用
Object.prototype.toString.call(x).slice(8, -1)(如[object Array]→"Array")
相关文章
- 蚂蚁庄园今日答案(每日更新)2026年1月16日 07-17
- 蚂蚁庄园今日正确答案1月16日 07-17
- 死亡搁浅2全部34个武器的解锁方法条件是什么 07-17
- 星塔旅人全部角色特殊回忆触发条件方式合集 07-17
- Palia帕利亚1.12至1.18村民需求物品清单大全 07-17
- 舒舒服服小岛时光全部魔法种子分布详情图 07-17