===和==的区别

==

==:称为 等值符(equality),当两边的值类型相同时直接比较值是否相同,若不相同,则先转化为 类型相同 的值,再进行比较;

这么理解: 当进行==比较时候: 先检查两个操作数数据类型,如果相同, 则进行值的比较, 如果不同, 则愿意为你进行一次类型转换, 转换成相同类型后再进行比较; 而===比较时, 如果类型不同,直接就是false,只当类型相同后再比较值,而不会进行类型转换。

一个判断值是否相等,一个是判断值及类型是否完全相等。


==的类型转换规则:
1)如果等号两边是boolean、string、number三者中任意两者进行比较即类型不同时,优先转换为数字进行比较。

100==100//返回true,将“100”字符串转换为数字100和100比较为true

/*数字转换为true/false时:0为false,非0数字为true*/
1==true     //返回true,将左边的true,将它转化为1,再进行比较

0==false    //返回true,将右边的false转化为0,再进行比较1==01//返回false,等号两边值得类型相同,不再转换类型了

NaN==NaN  //返回false,NaN和所有值包括自己都不相等

2)如果等号两边出现了null或undefined,null和undefined除了和自己相等,还彼此相等

undefined == undefined //返回true
null == null           //返回rue
undefined == null      //返回true

3)注意:NaN==NaN //返回false,NaN和所有值包括自己都不相等即返回false。

NaN==NaN  //返回false,NaN和所有值包括自己都不相等

/*用isNaN()判断是否为NaN*/
isNaN(NaN) //得到true



===

===:称为 等同符(identity ),当两边 值的类型相同时,再直接比较值,若类型就先不相同就不再比较值,直接返回false;

100===100//返回false,类型不同,左边为数值,右边为字符串

abc===“abc”   //返回false,类型不同,左边为变量,右边为字符串

‘abc’===“abc”  //返回true,类型相同且值也相同

NaN===NaN   //返回false,NaN和所有值包括自己都不相等即返回false

false===false  //返回true
  1. 对于对象、数组、函数(三者均为对象Object的instance):仅仅有等号
    两边引用了同一个对象。才返回true。引用不同对象。即使两个对象值相 等也返回false。
var a = {test:'test'};
var b = {test:'test'}; //b另外创建的一个新对象{test:'test'},和a不是同一个对象但值相等
var c = a;             //a和c引用了同一个对象{test:'test'}
a === b    			   //得到false,对象不相等则不在比较值
a === c    			   //得到true,对象相等且值也相等
  1. 如果等号两边出现了null或undefined,null和undefined除了和自己相等,还彼此相等
undefined === undefined //得到true
null === null //得到true
undefined === null //得到false
  1. 注意:NaN===NaN
    //返回false,NaN和所有值包括自己都不相等即返回false。
NaN===NaN  //返回false,NaN和所有值包括自己都不相等

/*用isNaN()判断是否为NaN*/
isNaN(NaN) //得到true
  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值