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 last-child 列表最后一项的样式
Jan 22 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
Feb 04 Javascript
jquery获得option的值和对option进行操作
Dec 13 Javascript
node.js Web应用框架Express入门指南
May 28 Javascript
JavaScript设计模式之装饰者模式介绍
Dec 28 Javascript
JavaScript生成SQL查询表单的方法
Aug 13 Javascript
Dojo获取下拉框的文本和值实例代码
May 27 Javascript
js获取Get值的方法
Sep 29 Javascript
JavaScript基本类型值-Number类型
Feb 24 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
Feb 20 jQuery
通过说明与示例了解js五种设计模式
Jun 17 Javascript
layui实现下拉框三级联动
Jul 26 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
PHP5.2下chunk_split()函数整数溢出漏洞 分析
2007/06/06 PHP
php中模拟POST传递数据的两种方法分享
2011/09/16 PHP
PHP序列号生成函数和字符串替换函数代码
2012/06/07 PHP
php控制linux服务器常用功能 关机 重启 开新站点等
2012/09/05 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
yii2实现根据时间搜索的方法
2016/05/25 PHP
laravel利用中间件做防非法登录和权限控制示例
2019/10/21 PHP
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
用jQuery获取IE9下拉框默认值问题探讨
2013/07/22 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
浅谈Angular路由守卫
2017/08/26 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
Vue js with语句原理及用法解析
2020/09/03 Javascript
python使用Pycharm创建一个Django项目
2018/03/05 Python
Flask-Mail用法实例分析
2018/07/21 Python
django celery redis使用具体实践
2019/04/08 Python
深入浅析Python 中 is 语法带来的误解
2019/05/07 Python
pytorch实现MNIST手写体识别
2020/02/14 Python
flask项目集成swagger的方法
2020/12/09 Python
Python jieba库分词模式实例用法
2021/01/13 Python
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
亿企通软件测试面试题
2012/04/10 面试题
电大自我鉴定
2013/10/27 职场文书
高中美术教学反思
2014/01/19 职场文书
如何写好优秀的创业计划书
2014/01/30 职场文书
推荐信格式范文
2014/05/09 职场文书
会计学毕业生求职信
2014/06/25 职场文书
小学安全工作汇报材料
2014/08/19 职场文书
办理收楼委托书范本
2014/10/09 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
2016北大自主招生自荐信模板
2016/01/28 职场文书