==是抽象相等操作符,而===是严格相等操作符。
在进行必要的类型转换后,==操作符才进行相等比较。
===操作符不会进行类型转换,因此如果两个值不相同,type === 将简单地返回false。
如此,使用==时,会发生一些令人头疼的事情,比如:
// 六种比较结果全是true
0 == ''; // true
0 == '0';
0 == false;
1 == '1';
1 == [1];
1 == true; 这种模糊判断,很容易给项目留下隐患。
不过,在比较null或undefined时倒是比较方便。
var a = null;
a == null; // true
a == undefined; // true许多开发者建议永远不要使用==操作符,是有一定道理的。