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写个checkbox——类似邮箱全选功能
Mar 19 Javascript
通过JS来动态的修改url,实现对url的增删查改
Sep 01 Javascript
coffeescript使用的方式汇总
Aug 05 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
Sep 20 Javascript
JQuery日期插件datepicker的使用方法
Mar 03 Javascript
jQuery实现元素的插入
Feb 27 Javascript
详解node.js平台下Express的session与cookie模块包的配置
Apr 26 Javascript
vue中组件的过渡动画及实现代码
Nov 21 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
Feb 21 Javascript
js变量值传到php过程详解 将php解析成数据
Jun 26 Javascript
jQuery实现数字华容道小游戏(实例代码)
Jan 16 jQuery
使用refresh_token实现无感刷新页面
Apr 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
php 保留小数点
2009/04/21 PHP
PHP 引用是个坏习惯
2010/03/12 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
Eclipse中php插件安装及Xdebug配置的使用详解
2013/04/25 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
flash javascript之间的通讯方法小结
2008/12/20 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
jquery数组之存放checkbox全选值示例代码
2013/12/20 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
2015/11/19 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
2016/06/22 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
2016/09/18 Javascript
高效的jQuery代码编写技巧总结
2017/02/22 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
2019/06/04 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
python实现斐波那契数列的方法示例
2017/01/12 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
python线程中同步锁详解
2018/04/27 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
如何通过Python实现标签云算法
2019/07/02 Python
Django配置MySQL数据库的完整步骤
2019/09/07 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
Django正则URL匹配实现流程解析
2020/11/13 Python
Carmen Sol官网:购买果冻鞋、手袋和配件
2021/01/01 全球购物
what is the difference between ext2 and ext3
2013/11/03 面试题
大二法学专业职业生涯规划范文
2014/02/12 职场文书
民事赔偿协议书
2014/11/02 职场文书
教师节班会开场白
2015/06/01 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书