中涛营销

javaScript运算符中"=="和"==="的区别

2019-04-19556

相同点:

这两个运算符都允许任意类型的操作数,如果操作数相等,返回true,否则返回false

不同

==:运算符称作相等,用来检测两个操作数是否相等,这里的相等定义的非常宽松,可以允许进行类型转换,仅仅比较两边变量的数值是否相等。

===:运算符称作恒等于,用来检测两个操作数是否严格相等。

1、对于string,number等基础类型;

不同类型间比较,==的比较,首先要两个类型转化成同一类型后,然后比较“值”是否相等;“===的比较,如果类型不同,其结果就是不等。

2、对于Array,Object等高级类型

3、基础类型与高级类型

对于==,要先将高级转化为基础类型,再进行“值”比较;而“===”因为类型不同,结果为false。

判断规则:

一:"=="规则

1.如果一个是字符串型,一个是数值,那么需要把字符串转换成数值型,两者再进行比较。

2.如果任一值是 true,那么就要将它转换成 1 再比较;如果是 false,那么就要将它转换成 0 再比较。

3.如果一个是null、一个是undefined,那么相等。

4.如果一个是对象,另一个是数值或字符串,需要把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。 js核心内置类,会尝试valueOf先于toString;

5.任何其他组合,则都不相等。

二:"==="规则

1.如果类型不同,那就不相等

2.如果两个都是数值型,并且是同一个值,那么[相等];(例外:如果其中至少一个是NaN,那么[不相等]。)(判断一个值是否是NaN,只能用isNaN()来判断)

3.如果两个都是字符串型,每个位置的字符都一样,那么相等;否则不相等 。

4.如果两个值都是true,或者都是false,那么相等。

5.如果两个值都引用同一个对象或函数,那么相等;否则不相等。

6.如果两个值都是null,或者都是undefined,那么相等。