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 相关文章推荐
jQuery插件-jRating评分插件源码分析及使用方法
Dec 28 Javascript
IE的fireEvent方法概述及应用
Feb 22 Javascript
JS更改select内option属性的方法
Oct 14 Javascript
谷歌Chrome浏览器扩展程序开发小记
Jan 06 Javascript
基于jQuery实现仿百度首页选项卡切换效果
May 29 Javascript
jQuery实现鼠标滑过图片移动特效
Dec 08 Javascript
bootstrap中的 form表单属性role="form"的作用详解
Jan 20 Javascript
基于JavaScript实现验证码功能
Apr 01 Javascript
分享vue.js devtools遇到一系列问题
Oct 24 Javascript
基于vue.js无缝滚动效果
Jan 25 Javascript
在vue项目中引入highcharts图表的方法(详解)
Mar 05 Javascript
js 将多个对象合并成一个对象 assign方法的实现
Sep 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
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
基于php-fpm的配置详解
2013/06/03 PHP
PHP中substr()与explode()函数用法分析
2014/11/24 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
2015/12/17 PHP
PHP中error_reporting函数用法详细介绍
2017/06/11 PHP
javascript 播放器 控制
2007/01/22 Javascript
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
javascript setinterval 的正确语法如何书写
2014/06/17 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
JavaScript原生对象之Date对象的属性和方法详解
2015/03/13 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
基于jquery实现表格无刷新分页
2016/01/07 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
对js中回调函数的一些看法
2016/08/29 Javascript
实例解析Array和String方法
2016/12/14 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
python私有属性和方法实例分析
2015/01/15 Python
python实现爬虫下载美女图片
2015/07/14 Python
玩转python爬虫之cookie使用方法
2016/02/17 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
python通过移动端访问查看电脑界面
2020/01/06 Python
TensorFlow加载模型时出错的解决方式
2020/02/06 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
解决tensorflow读取本地MNITS_data失败的原因
2020/06/22 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
2021/02/05 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
原生 JS+CSS+HTML 实现时序图的方法
2019/07/31 HTML / CSS
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
2013英文求职信模板范文
2013/11/15 职场文书
执行力心得体会
2013/12/31 职场文书
节约用水演讲稿
2014/05/21 职场文书
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle