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日期转换 时间戳转日期格式
Nov 05 Javascript
用客户端js实现带省略号的分页
Apr 27 Javascript
javascript实现回到顶部特效
May 06 Javascript
jquery读写cookie操作实例分析
Dec 24 Javascript
简单谈谈javascript中this的隐式绑定
Feb 22 Javascript
js 实现省市区三级联动菜单效果
Feb 20 Javascript
从零学习node.js之详解异步控制工具async(八)
Feb 27 Javascript
angular或者js怎么确定选中ul中的哪几个li
Aug 16 Javascript
vue+iview动态渲染表格详解
Mar 19 Javascript
简单了解JavaScript异步
May 23 Javascript
javascript使用链接跨域下载图片
Nov 01 Javascript
详解webpack的文件监听实现(热更新)
Sep 11 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中cookie的作用域
2008/03/27 PHP
php preg_filter执行一个正则表达式搜索和替换
2012/02/27 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
在Yii框架中使用PHP模板引擎Twig的例子
2014/06/13 PHP
php获取本周星期一具体日期的方法
2015/04/20 PHP
全面了解PHP中的全局变量
2016/06/17 PHP
PHP微信API接口类
2016/08/22 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
PHP的静态方法与普通方法用法实例分析
2019/09/26 PHP
JavaScript高级程序设计 扩展--关于动态原型
2010/11/09 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
基于JQuery的Select选择框的华丽变身
2011/08/23 Javascript
JS格式化数字金额用逗号隔开保留两位小数
2013/10/18 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
2016/01/03 Javascript
jQuery获得字体颜色16位码的方法
2016/02/20 Javascript
JavaScript手机振动API
2016/06/11 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
使用vue-aplayer插件时出现的问题的解决
2018/03/02 Javascript
深入浅析Vue中的Prop
2018/06/10 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
[01:51]2018年度CS GO最具人气外援-完美盛典
2018/12/16 DOTA
Python中使用动态变量名的方法
2014/05/06 Python
跟老齐学Python之总结参数的传递
2014/10/10 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
2015/03/05 Python
python 实现删除文件或文件夹实例详解
2016/12/04 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
前台文员职责范本
2014/03/07 职场文书
2015年材料员工作总结
2015/04/30 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
2019年农民幸福观调查的实践感悟
2019/12/19 职场文书
redis实现排行榜功能
2021/05/24 Redis