==
==
:称为 等值符(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
- 对于对象、数组、函数(三者均为对象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,对象相等且值也相等
- 如果等号两边出现了null或undefined,null和undefined除了和自己相等,还彼此相等
undefined === undefined //得到true
null === null //得到true
undefined === null //得到false
- 注意:NaN===NaN
//返回false,NaN和所有值包括自己都不相等即返回false。
NaN===NaN //返回false,NaN和所有值包括自己都不相等
/*用isNaN()判断是否为NaN*/
isNaN(NaN) //得到true
转载:https://blog.csdn.net/daponi/article/details/102475448
查看评论