typeof 运算符

最后更新:2026-09-09

typeof 运算符

typeof 返回一个表示操作数类型的字符串,是判断变量类型最快的办法。它是一元运算符,可以写成 typeof x 或 typeof(x)。注意它返回的是字符串,比如 typeof 42 得到 "number",而不是 Number 本身。

分类运算符
类型一元运算符
ES 版本ES1(1997)
操作数个数1 个
未声明变量是(返回 "undefined" 而不报错)

📝 语法

typeof 操作数
typeof(操作数)

⚙️ 参数

操作数任意值或变量;即使变量从未声明,typeof 也不会报错,而是返回 "undefined"。

返回值:类型字符串,可能是 "undefined"、"boolean"、"number"、"bigint"、"string"、"symbol"、"function" 或 "object"。

是否修改原值:否(返回新值)

▶ 示例

编辑下方代码,点击运行,在输出面板查看结果:

运行结果:

number
string
boolean
undefined
object
object
object
function
⚠️ 警告 typeof null 返回 "object",这是 1995 年 JavaScript 初版留下的历史 bug,因为早期的类型标签把 null 当成了空对象指针。要判断 null 必须直接比较:x === null。
💡 提示 想区分数组和普通对象,typeof 帮不上忙(两者都是 "object"),改用 Array.isArray(x)。

🌐 浏览器支持

浏览器 ChromeChrome EdgeEdge FirefoxFirefox SafariSafari OperaOpera
typeof v1 v12 v1 v1 v1
所有现代浏览器均支持
更多实战案例即将上线,敬请期待。

📚 相关教程

❓ 常见问题

Qtypeof null 为什么是 object?
A这是 JavaScript 最早版本的实现遗留:当时值以 32 位存储,低位用作类型标签,而 null 的二进制全是 0,正好落进对象的标签区间。这个错误太早被写进大量网页,标准化时只好保留。判断 null 请用 x === null。
Qtypeof 能区分数组和对象吗?
A不能,数组、普通对象、日期、正则在 typeof 眼里都是 "object"。要细分请用 Array.isArray(x)、x instanceof Date 或 Object.prototype.toString.call(x)。
Q检测一个可能没声明的变量该怎么写?
Atypeof someVar !== "undefined" 是唯一安全的写法。直接写 if (someVar) 在变量未声明时会抛出 ReferenceError;而 typeof 对未声明的名字也只返回 "undefined",不会中断程序。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏