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 验证上传图片大小[客户端]
Aug 01 Javascript
深入理解JavaScript系列(15) 函数(Functions)
Apr 12 Javascript
javascript学习笔记--数字格式类型
May 22 Javascript
javascript实现倒计时N秒后网页自动跳转代码
Dec 11 Javascript
jQuery采用连缀写法实现的折叠菜单效果
Sep 18 Javascript
js+ajax实现获取文件大小的方法
Dec 08 Javascript
node.js入门实例helloworld详解
Dec 23 Javascript
ajax跨域调用webservice的实现代码
May 09 Javascript
第五篇Bootstrap 排版
Jun 21 Javascript
jquery利用json实现页面之间传值的实例解析
Dec 12 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
Jan 10 Javascript
vue-froala-wysiwyg 富文本编辑器功能
Sep 19 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
成本8450万,票房仅2亿,口碑两极分化,又一部DC电影扑街了
2020/04/09 欧美动漫
PHP上传图片、删除图片简单实例
2016/11/12 PHP
JavaScript高级程序设计 读书笔记之十一 内置对象Global
2012/03/07 Javascript
flash遮住div问题的正确解决方法
2014/02/27 Javascript
js实例属性和原型属性示例详解
2014/11/23 Javascript
web 前端常用组件之Layer弹出层组件
2016/09/22 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
2016/12/06 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
几行js代码实现自适应
2017/02/24 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
2017/11/20 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
javascript实现蒙版与禁止页面滚动
2020/01/11 Javascript
原生JS实现留言板
2020/03/26 Javascript
小程序实现录音功能
2020/09/22 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
web.py中调用文件夹内模板的方法
2014/08/26 Python
Python获取邮件地址的方法
2015/07/10 Python
详解Python编程中基本的数学计算使用
2016/02/04 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
3种python调用其他脚本的方法
2020/01/06 Python
如何在VSCode下使用Jupyter的教程详解
2020/07/13 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
Flask-SocketIO服务端安装及使用代码示例
2020/11/26 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
html5使用canvas压缩图片的示例代码
2018/09/11 HTML / CSS
财务分析个人的自荐书范文
2013/11/24 职场文书
《只有一个地球》教学反思
2014/02/14 职场文书
计算机毕业生自荐信范文
2014/03/23 职场文书
预防艾滋病宣传标语
2014/06/25 职场文书
分布式架构Redis中有哪些数据结构及底层实现原理
2022/03/13 Redis