js中的“==”和“===”的原理及区别

两种方法说明问题:函数

一、全等号===只考虑类型相同的值的比较,不一样类型使用===进行比较,返回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)

相关文章
相关标签/搜索