两种方法说明问题:
1、全等号===只考虑类型相同的值的比较,不同类型使用===进行比较,返回false
双等号==会先将不同类型的值转换为相同的类型,然后使用全等号进行比较
使用双等号会有两个问题:(1)、转换规则可能不是你期望的那样
(2)、由于双等号是宽容的,类型转换的错误可能会被忽略掉。
2、全等号===(严格等号)
比较两个值,如果类型不相同,一定返回false;
如果类型相同,则按照如下的规则进行比较:
(1)、两个都是undefined类型,返回true (undefined === undefined)
(2)、两个都是null类型,返回true;(null === null)
(3)、两个都是number类型
a、 如果有一个是NAN,则为false;(NAN !== *//any value including NaN),NaN是一个全局对象的属性。NaN属性的数是指就是NaN,和Number.NaN的值一样,判断一个值是否是NaN,使用等号运算符(==和===)不能被用来判断一个值是否是NaN.必须使用Number.isNaN或是isNaN()函数
b、如果两个值相等,返回true;(x==x)
c、一个是+0,一个是-0 (+0===-0)