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'。

以下引用规范中的相关解释。

typeof运算符的基本返回值

作者最新文章