两种方法说明问题:函数
一、全等号===只考虑类型相同的值的比较,不一样类型使用===进行比较,返回false对象
双等号==会先将不一样类型的值转换为相同的类型,而后使用全等号进行比较方法
使用双等号会有两个问题:(1)、转换规则可能不是你指望的那样类型转换
(2)、因为双等号是宽容的,类型转换的错误可能会被忽略掉。di
二、全等号===(严格等号)错误
比较两个值,若是类型不相同,必定返回false;运算符
若是类型相同,则按照以下的规则进行比较:undefined
(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)