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 面向对象 重载
May 13 Javascript
Jquery写一个鼠标拖动效果实现原理与代码
Dec 24 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
Nov 18 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
Nov 23 Javascript
JSON字符串转JSON对象
Jul 31 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
Feb 24 Javascript
jquery trigger实现联动的方法
Feb 29 Javascript
详解jQuery中的DOM操作
Dec 23 Javascript
Angular动态添加、删除输入框并计算值实例代码
Mar 29 Javascript
JavaScript操作文件_动力节点Java学院整理
Jun 30 Javascript
Vue 去除路径中的#号
Apr 19 Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
Nov 25 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 获取全局变量的代码
2011/04/21 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
实例讲解php数据访问
2016/05/09 PHP
use jscript with List Proxy Server Information
2007/06/11 Javascript
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
使用impress.js制作幻灯片
2015/09/09 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
2016/12/08 Javascript
基于javascript实现最简单选项卡切换
2017/02/01 Javascript
Vue 全局loading组件实例详解
2018/05/29 Javascript
bootstrap table实现横向合并与纵向合并
2019/07/18 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
Python中使用logging模块打印log日志详解
2015/04/05 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
Python简单实现自动删除目录下空文件夹的方法
2017/08/29 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
2018/10/14 Python
python pyinstaller 加载ui路径方法
2019/06/10 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
2019/08/17 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
Python中关于浮点数的冷知识
2019/09/22 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
2020/03/30 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
Python利用myqr库创建自己的二维码
2020/11/24 Python
python爬取代理ip的示例
2020/12/18 Python
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
TripAdvisor日本:全球领先的旅游网站
2019/02/14 全球购物
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
拾金不昧感谢信
2015/01/21 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
合同范本之电脑出租
2019/08/13 职场文书
Python超简单容易上手的画图工具库推荐
2021/05/10 Python
Python中的min及返回最小值索引的操作
2021/05/10 Python
Python连续赋值需要注意的一些问题
2021/06/03 Python