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 相关文章推荐
JScript分割字符串示例代码
Sep 04 Javascript
javascript完美拖拽的实现方法
Sep 29 Javascript
JavaScript语言对Unicode字符集的支持详解
Dec 30 Javascript
js兼容pc端浏览器并有多种弹出小提示的手机端浮层控件实例
Apr 29 Javascript
Javascript实现div的toggle效果实例分析
Jun 09 Javascript
AngularJS 自定义指令详解及示例代码
Aug 17 Javascript
javascript数组遍历的方法实例分析
Sep 13 Javascript
JavaScript实现邮箱地址自动匹配功能代码
Nov 28 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
Sep 20 Javascript
微信小程序methods中定义的方法互相调用的实例代码
Aug 07 Javascript
小程序实现简单语音聊天的示例代码
Jul 24 Javascript
详解Vue的组件中data选项为什么必须是函数
Aug 17 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
php实现自动获取生成文章主题关键词功能的深入分析
2013/06/03 PHP
php数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
php Session无效分析资料整理
2016/11/29 PHP
刷新页面实现方式总结(HTML,ASP,JS)
2008/11/13 Javascript
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
判断对象是否Window的实现代码
2012/01/10 Javascript
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
Javascript实现动态菜单添加的实例代码
2013/07/05 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
深入理解Javascript中this的作用域
2014/08/12 Javascript
javascript省市区三级联动下拉框菜单实例演示
2015/11/29 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
2016/05/05 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
2017/03/01 Javascript
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
JS canvas实现画板和签字板功能
2021/02/23 Javascript
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
python日志记录模块实例及改进
2017/02/12 Python
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
python pycurl验证basic和digest认证的方法
2018/05/02 Python
python获取磁盘号下盘符步骤详解
2019/06/19 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
Python使用tkinter制作在线翻译软件
2021/02/22 Python
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
印度在线购物网站:Paytmmall
2019/07/24 全球购物
2014新年元旦活动策划方案
2014/02/18 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
党员自评材料范文
2014/12/17 职场文书
公司欠款证明
2015/06/24 职场文书
Go timer如何调度
2021/06/09 Golang
Python类方法总结讲解
2021/07/26 Python
用Python可视化新冠疫情数据
2022/01/18 Python
python解析照片拍摄时间进行图片整理
2022/07/23 Python
Mysql中mvcc各场景理解应用
2022/08/05 MySQL