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 面向对象,实现namespace,class,继承,重载
Oct 29 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
Mar 29 Javascript
extJS中常用的4种Ajax异步提交方式
Mar 07 Javascript
javascript使用正则获取url上的某个参数
Sep 04 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
Oct 29 Javascript
jQuery实现Tab选项卡切换效果简单演示
Nov 23 Javascript
浅谈jQuery中ajaxPrefilter的应用
Aug 01 Javascript
jQuery动态生成表格及右键菜单功能示例
Jan 13 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
Jul 02 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
Apr 18 Javascript
微信小程序 组件的外部样式externalClasses使用详解
Sep 06 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
Oct 10 jQuery
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引用地址改变变量值的问题
2012/03/23 PHP
基于PHP CURL获取邮箱地址的详解
2013/06/03 PHP
redis+php实现微博(一)注册与登录功能详解
2019/09/23 PHP
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
2015/09/14 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
2017/06/25 Javascript
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
微信小程序异步处理详解
2017/11/10 Javascript
node.js的Express服务器基本使用教程
2019/01/09 Javascript
Koa日志中间件封装开发详解
2019/03/09 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
[01:01:14]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第一场 11.21
2020/11/23 DOTA
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
Python内置函数OCT详解
2016/11/09 Python
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
对PyTorch torch.stack的实例讲解
2018/07/30 Python
在python中pandas的series合并方法
2018/11/12 Python
python获取本机所有IP地址的方法
2018/12/26 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
python随机生成库faker库api实例详解
2019/11/28 Python
python 给图像添加透明度(alpha通道)
2020/04/09 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
会计求职信
2014/05/29 职场文书
党员自我剖析材料(群众路线)
2014/10/06 职场文书
2015年环保局工作总结
2015/05/22 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书
2019各种保证书范文
2019/06/24 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js