当前位置: 首页 > 编程笔记 >

JavaScript中使用typeof运算符需要注意的几个坑

沈建柏
2023-03-14
本文向大家介绍JavaScript中使用typeof运算符需要注意的几个坑,包括了JavaScript中使用typeof运算符需要注意的几个坑的使用技巧和注意事项,需要的朋友参考一下

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中3个需要注意的运算符,包括了Javascript中3个需要注意的运算符的使用技巧和注意事项,需要的朋友参考一下 平时写惯了C#,所以会觉得什么样的运算符就应该做什么样的运算,但是有一天你的习惯被其他语言颠覆了,不知道是不是有一股强大的好奇 心,刚好在js中,我的这种习惯就被颠覆了,下面就看看哪些运算符颠覆了我的三观。 一:==运算符   ==运算符之所以可以颠覆

  • 本文向大家介绍smarty运用过程中要注意以下几个问题:相关面试题,主要包含被问及smarty运用过程中要注意以下几个问题:时的应答技巧和注意事项,需要的朋友参考一下 (1)正确配置smarty。主要要实例化smarty对象,配置smarty模板文件的路径; (2)php页面中使用assign赋值 和display显示页面; (3)smarty模板文件中不允许出现php代码段,所有的注释,变量,函

  • 本文向大家介绍Go使用defer函数要注意的几个点,包括了Go使用defer函数要注意的几个点的使用技巧和注意事项,需要的朋友参考一下 概述 defer 函数大家肯定都用过,它在声明时不会立刻去执行,而是在函数 return 后去执行的。 它的主要应用场景有异常处理、记录日志、清理数据、释放资源 等等。 这篇文章不是分享 defer 的应用场景,而是分享使用 defer 需要注意的点。 咱们先从一

  • 本文向大家介绍C#异步编程几点需要注意的地方,包括了C#异步编程几点需要注意的地方的使用技巧和注意事项,需要的朋友参考一下 尽量不要编写返回值类型为void的异步方法 在通常情况下,建议大家不要编写那种返回值类型为void的异步方法,因为这样做会破坏该方法的启动者与方法本身之间的约定,这套约定本来可以确保主调方能够捕获到异步方法所发生的异常。 正常的异步方法是通过它返回的Task对象来汇报异常的。

  • 本文向大家介绍php array_merge函数使用需要注意的一个问题,包括了php array_merge函数使用需要注意的一个问题的使用技巧和注意事项,需要的朋友参考一下 使用php语言的array_merge函数时,以为相同的键名会覆盖,但是请看如下代码: 会输出什么?我们预想中的是: 实际上输出的是: 不但没有被覆盖,而且数字键被重新连续索引了。 起初以为这个是bug,后来翻了php手册

  • 本文向大家介绍Go语言WaitGroup使用时需要注意的坑,包括了Go语言WaitGroup使用时需要注意的坑的使用技巧和注意事项,需要的朋友参考一下 前言 WaitGroup在go语言中,用于线程同步,单从字面意思理解,wait等待的意思,group组、团队的意思,WaitGroup就是指等待一组,等待一个系列执行完成后才会继续向下执行。Golang 中的 WaitGroup 一直是同步 gor