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 相关文章推荐
让textarea自动调整大小的js代码
Apr 12 Javascript
JavaScript中为元素加上name属性的方法
May 09 Javascript
JS中不为人知的五种声明Number的方式简要概述
Feb 22 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
May 07 Javascript
JQuery跳出each循环的方法
Apr 16 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
Jul 05 Javascript
Bootstrap源码解读导航条(7)
Dec 23 Javascript
javascript按钮禁用和启用的效果实例代码
Oct 29 Javascript
JavaScript面向对象的程序设计(犯迷糊的小羊)
May 27 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
Aug 22 Javascript
vue-cli3.0使用及部分配置详解
Aug 29 Javascript
继承行为在 ES5 与 ES6 中的区别详解
Dec 24 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中使用PDF文档功能
2006/10/09 PHP
PHP入门教程之表单与验证实例详解
2016/09/11 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
Mootools 1.2教程 排序类和方法简介
2009/09/15 Javascript
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
Jquery中删除元素的实现代码
2011/12/29 Javascript
Three.js源码阅读笔记(Object3D类)
2012/12/27 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
浅析return false的正确使用
2013/11/04 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
javascript学习小结之prototype
2015/12/03 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
在Django的模板中使用认证数据的方法
2015/07/23 Python
Python中将字典转换为XML以及相关的命名空间解析
2015/10/15 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
在python中利用numpy求解多项式以及多项式拟合的方法
2019/07/03 Python
CSS3不透明度实例讲解
2016/04/26 HTML / CSS
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
亚马逊印度站:Amazon.in
2017/10/15 全球购物
施华洛世奇韩国官网:SWAROVSKI韩国
2018/06/05 全球购物
优秀老师事迹材料
2014/02/05 职场文书
模范教师事迹材料
2014/02/10 职场文书
餐饮部总监岗位职责范文
2014/02/13 职场文书
大学应届生的自我评价
2014/03/06 职场文书
教导主任竞聘演讲稿
2014/05/16 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
小学中等生评语
2014/12/29 职场文书