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 相关文章推荐
List the Codec Files on a Computer
Jun 11 Javascript
prototype 中文参数乱码解决方案
Nov 09 Javascript
jquery插件开发注意事项小结
Jun 04 Javascript
Bootstarp基本模版学习教程
Feb 01 Javascript
微信小程序之数据双向绑定与数据操作
May 12 Javascript
Nginx 配置多站点vhost 的方法
Jan 07 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
Feb 23 Javascript
js实现简单选项卡功能
Mar 23 Javascript
JS实现随机抽取三人
Nov 06 Javascript
JS实现网页端猜数字小游戏
Mar 06 Javascript
json.stringify()与json.parse()的区别以及用处
Jan 25 Javascript
Vue Element plus使用方法梳理
Dec 24 Vue.js
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
jQuery的deferred对象详解
2014/11/12 Javascript
JavaScript判断变量是否为空的自定义函数分享
2015/01/31 Javascript
javascript验证身份证号
2015/03/03 Javascript
jquery if条件语句的写法
2016/05/19 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
arcgis for js 修改infowindow样式的方法
2016/11/02 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
详解如何在vue项目中使用eslint+prettier格式化代码
2018/11/10 Javascript
js验证账户名是否重复
2020/05/26 Javascript
微信小程序报错: thirdScriptError的错误问题
2020/06/19 Javascript
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
详解Django通用视图中的函数包装
2015/07/21 Python
python动态网页批量爬取
2016/02/14 Python
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
2017/09/05 Python
Python实现字符串格式化输出的方法详解
2017/09/20 Python
浅谈Python处理PDF的方法
2017/11/10 Python
python如何重载模块实例解析
2018/01/25 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
HTML5 script元素async、defer异步加载使用介绍
2013/08/23 HTML / CSS
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
旅游管理专业学生求职信
2013/09/28 职场文书
大学生收银员求职信分享
2014/01/02 职场文书
护士岗前培训自我评鉴
2014/02/28 职场文书
小学综合实践活动总结
2014/07/07 职场文书
卖车协议书范例
2014/09/16 职场文书
创业计划书之甜品店
2019/09/18 职场文书
PHP解决高并发问题
2021/04/01 PHP
Mysql关于数据库是否应该使用外键约束详解说明
2021/10/24 MySQL