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 相关文章推荐
让回调函数 showResponse 也带上参数的代码
Aug 13 Javascript
mapper--图片热点区域高亮组件官方站点
Dec 22 Javascript
新浪微博字数统计 textarea字数统计实现代码
Aug 28 Javascript
getComputedStyle与currentStyle获取样式(style/class)
Mar 19 Javascript
php中给js数组赋值方法
Mar 10 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
Jun 15 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
Nov 09 Javascript
JS简单实现String转Date的方法
Mar 02 Javascript
jQuery实现的自适应焦点图效果完整实例
Aug 24 Javascript
JS简单判断函数是否存在的方法
Feb 13 Javascript
AngularJS路由删除#符号解决的办法
Sep 28 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
Oct 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网上调查系统
2006/10/09 PHP
php Memcache 中实现消息队列
2009/11/24 PHP
PHP取二进制文件头快速判断文件类型的实现代码
2013/08/05 PHP
PHP制作百度词典查词采集器
2015/01/29 PHP
PHP生成plist数据的方法
2015/06/16 PHP
php 防止表单重复提交两种实现方法
2016/11/03 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
清空上传控件input file的值
2010/07/03 Javascript
jQuery实现图片向左向右切换效果的简单实例
2016/05/18 Javascript
在IE8上JS实现combobox支持拼音检索功能
2016/05/23 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
2017/07/05 Javascript
JavaScript面向对象精要(下部)
2017/09/12 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
JS实现canvas简单小画板功能
2020/06/23 Javascript
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
python实现的希尔排序算法实例
2015/07/01 Python
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
python 多线程重启方法
2019/02/18 Python
python sorted函数原理解析及练习
2020/02/10 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
Python如何将将模块分割成多个文件
2020/08/04 Python
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
Shopee马来西亚:随拍即卖,最佳行动电商拍卖平台
2017/06/05 全球购物
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
英国办公家具网站:Furniture At Work
2019/10/07 全球购物
关于环保的建议书
2014/05/12 职场文书
机关保密承诺书
2014/06/03 职场文书
2014年保卫科工作总结
2014/12/05 职场文书
2015年环保局工作总结
2015/05/22 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python
POST提交数据常见的四种方式
2022/01/18 HTML / CSS
java实现自定义时钟并实现走时功能
2022/06/21 Java/Android