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 相关文章推荐
JavaScript高级程序设计 事件学习笔记
Sep 10 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
Jul 20 Javascript
使用js在页面中绘制表格核心代码
Sep 16 Javascript
推荐JavaScript实现继承的最佳方式
Nov 11 Javascript
浅谈javascript中基本包装类型
Jun 03 Javascript
通用javascript代码判断版本号是否在版本范围之间
Nov 29 Javascript
Vue-Router进阶之滚动行为详解
Sep 13 Javascript
AngularJS实现表单验证功能详解
Oct 12 Javascript
React操作真实DOM实现动态吸底部的示例
Oct 23 Javascript
Vue 中的受控与非受控组件的实现
Dec 17 Javascript
angularjs http与后台交互的实现示例
Dec 21 Javascript
详解Nuxt.js 实战集锦
Nov 19 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中array_merge与array+array的区别
2013/06/21 PHP
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
JavaScript对象模型-执行模型
2008/04/28 Javascript
javascript smipleChart 简单图标类
2011/01/12 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
jQuery插件开发基础简单介绍
2013/01/07 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
JS简单实现动画弹出层效果
2015/05/05 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
JavaScript数组去重的3种方法和代码实例
2015/07/01 Javascript
js中class的点击事件没有效果的解决方法
2016/10/13 Javascript
树结构之JavaScript
2017/01/24 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
使用NestJS开发Node.js应用的方法
2018/12/03 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
0基础学习前端开发的一些建议
2020/07/14 Javascript
前端开发基础javaScript的六大作用
2020/08/06 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
JavaScript 绘制饼图的示例
2021/02/19 Javascript
python2.7+selenium2实现淘宝滑块自动认证功能
2018/02/24 Python
python样条插值的实现代码
2018/12/17 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
利用Python实现Shp格式向GeoJSON的转换方法
2019/07/09 Python
Django 过滤器汇总及自定义过滤器使用详解
2019/07/19 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
学校教师读书活动总结
2014/07/08 职场文书
缓刑人员思想汇报
2014/10/11 职场文书
JVM之方法返回地址详解
2022/02/28 Java/Android