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 相关文章推荐
JQuery 技巧和窍门整理(8个)
Apr 22 Javascript
一起来写段JS drag拖动代码
Dec 09 Javascript
基于Jquery实现的一个图片滚动切换
Jun 21 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
Jan 15 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
Jul 02 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
Dec 25 Javascript
js去字符串前后空格的实现方法
Feb 26 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
Jan 10 Javascript
jQuery实现一个简单的轮播图
Feb 19 Javascript
jQuery插件zTree实现删除树节点的方法示例
Mar 08 Javascript
详解使用nvm管理多版本node的方法
Aug 30 Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
May 22 Javascript
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
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
php ImageMagick windows下安装教程
2015/01/26 PHP
jquery操作select option 的代码小结
2011/06/21 Javascript
5个最佳的Javascript日期处理类库分享
2012/04/15 Javascript
ExtJS4给Combobox设置列表中的默认值示例
2014/05/02 Javascript
jQuery满意度星级评价插件特效代码分享
2015/08/19 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
修改jquery中dialog的title属性方法(推荐)
2016/08/26 Javascript
js选项卡的制作方法
2017/01/23 Javascript
bootstrap输入框组使用方法
2017/02/07 Javascript
微信小程序富文本渲染引擎的详解
2017/09/30 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
jQuery获取随机颜色的实例代码
2018/05/21 jQuery
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
vue鼠标悬停事件实例详解
2019/04/01 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
Python机器学习之决策树算法实例详解
2017/12/06 Python
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
python绘制圆柱体的方法
2018/07/02 Python
布鲁明戴尔百货店:Bloomingdale’s
2016/12/21 全球购物
约瑟夫·特纳男装:Joseph Turner
2017/10/10 全球购物
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
如何利用cmp命令比较文件
2016/04/11 面试题
计算机应用毕业生自荐信
2013/10/23 职场文书
新书发布会策划方案
2014/06/09 职场文书
乡镇爱国卫生月活动总结
2014/06/25 职场文书
大学生上课迟到检讨书
2014/10/15 职场文书
2015年元旦主持词结束语
2014/12/14 职场文书
初三英语教学计划
2015/01/23 职场文书
大学生求职自荐信范文
2015/03/04 职场文书
2015年师德表现自我评价
2015/03/05 职场文书
八年级作文之一起的走过日子
2019/09/17 职场文书
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS