===
由于意外的类型转换,我可以理解为什么在比较数字、布尔值、空字符串等时是必要的,例如
var foo = 1;
var bar = true;
// bar == foo => true
// bar === foo => false
但是 在将变量与非空字符串==
进行比较时会不会引入错误?在这种情况下使用over是否更有效?==
===
===
由于意外的类型转换,我可以理解为什么在比较数字、布尔值、空字符串等时是必要的,例如
var foo = 1;
var bar = true;
// bar == foo => true
// bar === foo => false
但是 在将变量与非空字符串==
进行比较时会不会引入错误?在这种情况下使用over是否更有效?==
===
这已经在这里被问了很多,所以我会让一个更好的海报然后我自己回答。
看看这里: http: //longgoldenears.blogspot.com/2007/09/triple-equals-in-javascript.html
3个等号表示“没有类型强制的平等”。使用三等号,值的类型也必须相同。
0==假 // 真 0===false // false,因为它们是不同的类型 1=="1" // true,自动类型强制 1==="1" // false,因为它们是不同的类型
JavaScript 中 == 和=== 的区别
始终使用标识运算符 ( !==
and ===
) 并仅在需要时手动执行类型强制 (例如Boolean(someVar)
or )是一种很好的做法Number(someVar)
。
好吧,我自己回答了... 5 == "5",但是 5 !== "5",这可能是出乎意料的。不过,我会赞扬任何有更深入见解的人。
"==" 在比较完成之前进行类型转换。这就是为什么 5 == "5" 是真而不是假的原因。
而 "===" 则不进行这种转换,因此只要类型不同, 5 === "5" 就不同。