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 相关文章推荐
js 鼠标拖动对象 可让任何div实现拖动效果
Nov 09 Javascript
google jQuery 引用文件,jQuery 引用地址集合(jquery 1.2.6至jquery1.5.2)
Apr 24 Javascript
限制textbox或textarea输入字符长度的JS代码
Oct 16 Javascript
js浮点数精确计算(加、减、乘、除)
Dec 26 Javascript
js实现window.open不被拦截的解决方法汇总
Oct 30 Javascript
jQuery带进度条全屏图片轮播特效代码分享
Jun 28 Javascript
JS实现的左侧竖向滑动菜单效果代码
Oct 19 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
Sep 04 Javascript
微信小程序 video组件详解
Oct 25 Javascript
layui选项卡效果实现代码
May 19 Javascript
详解JS深拷贝与浅拷贝
Aug 04 Javascript
JavaScript实现下拉列表
Jan 20 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
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
php.ini 中文版
2006/10/28 PHP
dedecms中显示数字验证码的修改方法
2007/03/21 PHP
PHP中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
jquery attr 设定src中含有&(宏)符号问题的解决方法
2011/07/26 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
2014/05/23 Javascript
简介JavaScript中fixed()方法的使用
2015/06/08 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
connection reset by peer问题总结及解决方案
2016/10/21 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
jQuery表单元素过滤选择器用法实例分析
2019/02/20 jQuery
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
[01:05:41]EG vs Optic Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
使用Python神器对付12306变态验证码
2016/01/05 Python
Python ftp上传文件
2016/02/13 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
parser.add_argument中的action使用
2020/04/20 Python
keras的ImageDataGenerator和flow()的用法说明
2020/07/03 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
Haggar官网:美国男装品牌
2020/02/16 全球购物
简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
2016/11/20 面试题
下列程序在32位linux或unix中的结果是什么
2014/03/25 面试题
业务员岗位职责
2013/11/16 职场文书
酒店办公室文员岗位职责
2013/12/18 职场文书
高三毕业典礼主持词
2014/03/27 职场文书
保护环境建议书100字
2014/05/13 职场文书
2014年社区矫正工作总结
2014/11/18 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
html5+实现plus.io进行拍照和图片等获取
2022/06/01 HTML / CSS