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 相关文章推荐
EasyUI 中 MenuButton 的使用方法
Jul 14 Javascript
JS仿百度搜索自动提示框匹配查询功能
Nov 21 Javascript
JavaScript学习笔记之创建对象
Mar 25 Javascript
AngularJS 过滤器的简单实例
Jul 27 Javascript
JS实现页面数据无限加载
Sep 13 Javascript
详解webpack+angular2开发环境搭建
Jun 28 Javascript
Vue-Router实现组件间跳转的三种方法
Nov 07 Javascript
详解Vue.js中.native修饰符
Apr 24 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
Aug 29 Javascript
深入了解JS之作用域和闭包
Jun 16 Javascript
关于Node.js中频繁修改代码重启服务器的问题
Oct 15 Javascript
JavaScript实现鼠标移入随机变换颜色
Nov 24 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+mysql事务rollback&commit示例
2010/02/08 PHP
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
使用php语句将数据库*.sql文件导入数据库
2014/05/05 PHP
PHP截取指定图片大小的方法
2014/12/10 PHP
JavaScript中获取未知对象属性的代码
2011/04/27 Javascript
jquery Validation表单验证使用详解
2020/09/12 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
javasript实现密码的隐藏与显示
2015/05/08 Javascript
javascript实现选中复选框后相关输入框变灰不可用的方法
2015/08/11 Javascript
浅谈js基本数据类型和typeof
2016/08/09 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
JavaScript 中的 this 工作原理
2018/06/20 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
2019/01/18 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
Python基于多线程实现抓取数据存入数据库的方法
2018/06/22 Python
python 读取目录下csv文件并绘制曲线v111的方法
2018/07/06 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
python实现机器学习之元线性回归
2018/09/06 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
使用Python刷淘宝喵币(低阶入门版)
2019/10/30 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
python 控制台单行刷新,多行刷新实例
2020/02/19 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
信息系统专业个人求职信范文
2013/12/07 职场文书
工作态度检讨书
2014/02/11 职场文书
捐款倡议书怎么写
2014/05/13 职场文书
幼儿园教师考核评语
2014/12/31 职场文书
开展警示教育活动总结
2015/05/09 职场文书
辩护意见书
2015/06/04 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
《日月潭》教学反思
2016/02/20 职场文书
一文了解MySQL二级索引的查询过程
2022/02/24 MySQL