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 封装Ajax传递的数据代码
Jun 05 Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
Aug 02 Javascript
JavaScript错误处理
Feb 03 Javascript
JS实现进入页面时渐变背景色的方法
Feb 25 Javascript
对象题目的一个坑 理解Javascript对象
Dec 22 Javascript
javascript类型系统_正则表达式RegExp类型详解
Jun 24 Javascript
JavaScript表单焦点自动切换代码
Jul 24 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
Oct 19 Javascript
js实现点击每个li节点,都弹出其文本值及修改
Dec 15 Javascript
详解JS异步加载的三种方式
Mar 07 Javascript
JavaScript 数组的进化与性能分析
Sep 18 Javascript
vue更改数组中的值实例代码详解
Feb 07 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
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
php 实现一个字符串加密解密的函数实例代码
2016/11/01 PHP
Ubuntu上安装yaf扩展的方法
2018/01/29 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
jQuery .tmpl() 用法示例介绍
2014/08/21 Javascript
JavaScript获取当前网页最后修改时间的方法
2015/04/03 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
前端设计师们最常用的JS代码汇总
2016/09/25 Javascript
js常用DOM方法详解
2017/02/04 Javascript
解析jquery easyui tree异步加载子节点问题
2017/03/08 Javascript
Angular.js去除页面中显示的空行方法示例
2017/03/30 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
Python递归实现汉诺塔算法示例
2018/03/19 Python
python 读取目录下csv文件并绘制曲线v111的方法
2018/07/06 Python
pymysql模块的操作实例
2019/12/17 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
2019/12/25 Python
Python类的动态绑定实现原理
2020/03/21 Python
PyQt实现计数器的方法示例
2021/01/18 Python
HTML5中的Article和Section元素认识及使用
2013/03/22 HTML / CSS
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
Lentiamo荷兰:在线订购隐形眼镜、隐形眼镜液和太阳镜
2019/10/25 全球购物
主办会计岗位职责
2014/03/13 职场文书
2014年大学生四年规划书范文
2014/04/03 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
通报表扬范文
2015/01/17 职场文书
人事主管岗位职责
2015/02/04 职场文书
欠款纠纷起诉状
2015/05/19 职场文书
详解Vue3使用axios的配置教程
2022/04/29 Vue.js