JavaScript中使用typeof运算符需要注意的几个坑


Posted in Javascript onNovember 08, 2014

typeof是一个运算符,它对操作数返回的结果是一个字符串,有6种(只针对ES,不包含HOST环境对象)。

1.'undefined'
2.'boolean'
3.'string'
4.'number'
5.'object'
6.'function'

因为它本身是运算符,它不是函数,使用时没必要加个小括号。

if (typeof(obj) === 'undefined') {

    // ...

}

typeof用来判断类型,它有几个坑

1. 对null返回是'object',你却不能真正当对象使用。

var obj = null

if (typeof obj === 'object') {

    obj.a() // 这里报错

}

2. 对NaN返回是'number',你却不能使用它进行算术运算。

var obj = {}

var num = parseInt(obj.a)

if (typeof num === 'number') {

    num = num + 10 // 执行后num仍然是NaN

}

3. 不能区分对象、数组、正则,对它们操作都返回'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. Safar5,Chrome7之前的版本对正则对象返回 'function'。

最后贴上规范里的解释

JavaScript中使用typeof运算符需要注意的几个坑

Javascript 相关文章推荐
比较详细的关于javascript中void(0)的具体含义解释
Aug 02 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
Mar 21 Javascript
JavaScript中String.match()方法的使用详解
Jun 06 Javascript
JS中Eval解析JSON字符串的一个小问题
Feb 21 Javascript
javascript实现延时显示提示框特效代码
Apr 27 Javascript
基于JS实现省市联动效果代码分享
Jun 06 Javascript
jQuery模拟窗口抖动效果
Mar 15 Javascript
vue登录注册及token验证实现代码
Dec 14 Javascript
原生JS实现列表子元素顺序反转的方法分析
Jul 02 Javascript
小程序清理本地缓存的方法
Aug 17 Javascript
el-select数据过多懒加载的解决(loadmore)
May 29 Javascript
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
JavaScript中判断整数的多种方法总结
Nov 08 #Javascript
JavaScript中判断整字类型最简洁的实现方法
Nov 08 #Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
Nov 08 #Javascript
JavaScript函数模式详解
Nov 07 #Javascript
JavaScript代码复用模式详解
Nov 07 #Javascript
JavaScript中的style.cssText使用教程
Nov 06 #Javascript
JavaScript组合拼接字符串的效率对比测试
Nov 06 #Javascript
You might like
PHP日期时间函数的高级应用技巧
2009/05/16 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
2014/11/19 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
PHP中命名空间的使用例子
2019/03/22 PHP
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
jquery $.ajax各个事件执行顺序
2010/10/15 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
推荐9款炫酷的基于jquery的页面特效
2014/12/07 Javascript
JS简单循环遍历json数组的方法
2016/04/22 Javascript
详解关于Vuex的action传入多个参数的问题
2019/02/22 Javascript
详细介绍解决vue和jsp结合的方法
2020/02/06 Javascript
vue 解决IOS10低版本白屏的问题
2020/11/17 Javascript
解决基于 keep-alive 的后台多级路由缓存问题
2020/12/23 Javascript
[02:11]2016国际邀请赛中国区预选赛全程回顾
2016/07/01 DOTA
python使用os模块的os.walk遍历文件夹示例
2014/01/27 Python
python人人网登录应用实例
2014/09/26 Python
跟老齐学Python之折腾一下目录
2014/10/24 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
python如何生成各种随机分布图
2018/08/27 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
python图像和办公文档处理总结
2019/05/28 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
django列表筛选功能的实现代码
2020/03/27 Python
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
eBay加拿大站:eBay.ca
2019/06/20 全球购物
长辈证婚人证婚词
2014/01/09 职场文书
寄语十八大感言
2014/02/07 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
信访工作汇报材料
2014/10/27 职场文书
文艺晚会开场白
2015/05/29 职场文书
花田少年史观后感
2015/06/16 职场文书
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript