js判断(==和===)的区别以及null、undefined、NaN等变量的判别方式

1、=====的区别

==代表相同,===代表严格相同
使用==时,首先检查两个变量的数据类型,若相同,进行===判断,若不相同,则进行一次隐性类型转换,转换成相同类型后再进行===比较。
使用===时,引用类型的比较是比较其地址值,即引用的地址是否相同,若不同则为false

2、隐性类型转换规则

(1)==两边存在NaN,直接返回false
(2)==两边存在boolean类型的值,则转为Number类型(false转为0true转为1)
(3)再看==两边有没有字符串:
a、如果两边都是字符串,直接比较,
b、如果一个是字符串一个是数字,则字符串转数字
c、对象使用toString或者valueOf方法转成字符串
(4)如果是数字,对方是对象,对象取valueOf()或者toString()进行比较, 其他一律返回false
(5)null, undefined不会进行类型转换, 但它们俩相等

简单来说,隐性转换规则如图:图片地址
在插入图片描述

3、几个实用的特殊的判断

(1)判断变量xx是不是undefined,使用 xx===undefined
(2)判断变量xx是不是null,使用 xx===null
(3)判断变量xx是不是null或者undefined,使用 xx==null或xx==undefined
(4)NaN与谁比较(无论是==还是===),都返回false
(5)判断变量xx是不是NaN,使用 isNaN(xx)
(6)if(NaN) if(undefined) if(null) if(0) if(''),都返回false
(7)判断变量xx是不是数组,使用 Array.isArray(xx)
(8)判断变量xx是不是对象(狭义上的对象,不包括数组和函数),这里给出两种方法:
	第一种: xx instanceof Object&&!Array.isArray(xx)&&(typeof xx)!=="function"
	第二种: Object.prototype.toString.call(xx) === '[object Object]'
(9)判断变量xx是不是函数,使用 typeof xx ==="function"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值