js两个等号和三个等号的区别
== 用于一般比较,在比较的时候可以转换数据类型,再比较转换后的值是否相等
=== 用于严格比较,只要类型不匹配就返回flase。
-
对于string,number等基础类型之间的比较,== 和 === 是有区别的
(两等类型不同是转换再比较,三等类型不同直接返回false) -
对于Array,Object等高级类型之间的比较,== 和 ===是没有区别的
-
基础类型与高级类型之间的比较,== 和 === 是有区别的
对于==,将高级转化为基础类型,进行“值”比较,因为类型不同,===结果为false
举例说明:
两等情况
"1" == true类型不同,"=="将先做类型转换,把true转换为1,即为 "1" == 1;
此时,类型仍不同,继续进行类型转换,把"1"转换为1,即为 1 == 1。
三等情况
1.如果比较:"1" === true 左侧为字符型,右侧为bool布尔型或int数值型,左右两侧类型不同,结果为false;
2.如果比较: 1 === 1 左侧为int数值型,右侧为int数值型,左右两侧类型相同,数值大小也相同,结果为true;
3.如果比较: 1 === 2 左侧为int数值型,右侧为int数值型,左右两侧类型相同,但数值大小不同,结果为false。