Javascript == 判断中的坑和总结记录。
我参与了掘金人气创作者榜单评比,欢迎点击这里为我投票哈~
等号判断举例
- 常见的判断
"1" == 1; // true
"1" === 1; // false
- 来点稍微有难度的
"0" == "" // false
"0" == false // true
"" == 0 // true
- 地狱级难度
[] == ![] // true
2 == [2]; // true
"" == [null]; // true
"" == []; // true
宽松相等和严格相等
在Javascript中判断两个变量是否相等可以用等号和全等号判断,全等相较于等号判断方式更为严格
常见的理解是: == 检查值是否相等,=== 检查值和类型是否相等
但这不够准确,== 和 === 都会检查操作数的类型。区别在于操作数类型不同时它们的处理方式不同。
准确的理解为:== 允许在相等比较中进行强制类型转换,而 === 不允许
批量练习
"0" == null;
"0" == undefined;
"0" == false;
"0" == NaN;
"0" == 0;
"0" == "";
false == null;
false == undefined;
false == NaN;
false == 0;
false == "";
false == [];
false == {};
"" == null;
"" == undefined;
"" == NaN;
NaN == NaN
"" == 0;
"" == [];
"" == {};
0 == null;
0 == undefined;
0 == NaN;
0 == [];
0 == {};
0 == "\n";
0 == " ";
+0 == -0
[] == ![]
2 == [2];
"" == [null];
结果(先尝试自己做再看结果)
"0" == null; // false
"0" == undefined; // false
"0" == false; // true -- 晕!
"0" == NaN; // false
"0" == 0; // true
"0" == ""; // false
false == null; // false
false == undefined; // false
false == NaN; // false
false == 0; // true -- 晕!
false == ""; // true -- 晕!
false == []; // true -- 晕!
false == {}; // false
"" == null; // false
"" == undefined; // false
"" == NaN; // false
NaN == NaN // false
"" == 0; // true -- 晕!
"" == []; // true -- 晕!
"" == {}; // false
0 == null; // false
0 == undefined; // false
0 == NaN; // false
0 == []; // true -- 晕!
0 == {}; // false
0 == "\n"; // true
0 == " "; // true
+0 == -0 // true
[] == ![] // true
2 == [2]; // true
"" == [null]; // true
总结
如果非要对 == 两边的值进行对比,以下两个原则可以有效地避免出错。
- 如果两边的值中有 true 或者 false,千万不要使用 ==。
- 如果两边的值中有 []、"" 或者 0,尽量不要使用 ==。
总之 == 最好能不用就不用,还是多打一个字符用 === 吧。