JavaScript中typeof运算符的返回值陷阱与注意事项
作者:拾光时间:2026-10-28 15:54:06浏览:629
本文深入解析JavaScript中typeof运算符的六种返回值,重点剖析其常见陷阱:null被误判为object、NaN被视为number以及无法区分数组与正则对象。同时指出Safari5及Chrome7前版本对正则返回function的历史兼容性问题,帮助开发者准确使用类型检查。
typeof运算符的基本返回值
typeof属于运算符,其返回值类型为字符串,涵盖6种情况(仅针对ES标准,排除宿主环境对象)。
1.'undefined' 2.'boolean' 3.'string' 4.'number' 5.'object' 6.'function'
鉴于typeof为运算符而非函数,调用时无需添加括号。
代码如下:
if (typeof(obj) === 'undefined') {
// ...
}
typeof判断类型的常见陷阱
利用typeof进行类型判断存在若干陷阱。
1. null的typeof结果为'object',但无法按对象方式操作。
代码如下:
var obj = null
if (typeof obj === 'object') {
obj.a() // 此处触发错误
}
2. NaN的typeof结果为'number',但无法执行算术运算。
代码如下:
var obj = {}
var num = parseInt(obj.a)
if (typeof num === 'number') {
num = num + 10 // 运算后num值仍为NaN
}
3. 无法区分对象、数组及正则表达式,对其执行typeof均返回'object'。
代码如下:
var obj = {}
var arr = []
var reg = /pop/g
console.log(typeof obj) // 'object'
console.log(typeof arr) // 'object'
console.log(typeof reg) // 'object'
4. Safari5及Chrome7之前版本中,正则对象typeof返回'function'。
以下引用规范中的相关解释。

作者最新文章
JS处理含Emoji或中文的字符串转数组乱码问题
2026-11-05 16:12:28
JS怎么使用展开运算符合并对象
2026-11-05 14:42:18
ES6+环境下判断JS对象为空的简洁写法
2026-11-05 12:12:23
怎么通过replacer函数自定义JS中JSON的格式化输出
2026-11-05 11:19:44
JS正则表达式基础:字面量与RegExp构造函数的区别及常用元字符
2026-11-05 11:16:58
