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)。
🌐 浏览器支持
| 浏览器 | |||||
|---|---|---|---|---|---|
| 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",不会中断程序。