一、区别
== 用于比较 判断 两者相等 ==在比较的时候可以转自动换数据类型
===用于严格比较 判断两者严格相等 ===严格比较,不会进行自动转换,要求进行比较的操作数必须类型一致,不一致时返回flase。
举例说明:
1、==
"1" == true
类型不同,"=="将先做类型转换,把true转换为1,即为 "1" == 1;
此时,类型仍不同,继续进行类型转换,把"1"转换为1,即为 1 == 1;
此时,"==" 左右两边的类型都为数值型,比较成功!返回true
2、===
如果比较:"1" === true 左侧为字符型,右侧为bool布尔型,左右两侧类型不同,结果为false;
如果比较:"1" === 1 左侧为字符型,右侧为int数值型,左右两侧类型不同,结果为false;
如果比较: 1 === 1 左侧为int数值型,右侧为int数值型,左右两侧类型相同,数值大小也相同,结果为true;
如果比较: 1 === 2 左侧为int数值型,右侧为int数值型,左右两侧类型相同,但数值大小不同,结果为false;
简而言之就是 "==" 只要求值相等; "===" 要求值和类型都相等
二、“==”转换规则
1、number类型与string类型比较,string会转换为number类型
'' == '0' //false 0 == ''//true; 0 == '0'//true ' \t\r\n '==0//true
2、null和undefined类型比较始终相等
null == undefined //true
3、布尔类型与其它任何类型进行比较,布尔类型将会转换为number类型
false == 'false'//false false == '0'//true false == null//false null == undefined //true
4、number类型或string类型与object类型进行比较,number或者string类型都会转换为object类型
var a = 0, b = {}; a == b//false
两者区别出处:http://blog.youkuaiyun.com/seven_amber/article/details/62889290
==转换规则出处:http://www.cnblogs.com/liyunhua/p/4621925.html