可能重复:
JavaScript === vs == : Does it matter which “equal” operator I use?
我可以理解为什么在比较数字,布尔值,空字符串等时由于意外的类型转换而需要===
,例如。
var foo = 1;
var bar = true;
// bar == foo => true
// bar === foo => false
但是,在将变量与 非空 字符串文字进行比较时,==
是否会引入错误?在这种情况下使用==
而不是===
会更有效吗?
答案 0 :(得分:7)
这里有很多问题,所以我只想让一张更好的海报自己回答。
看看这里:http://longgoldenears.blogspot.com/2007/09/triple-equals-in-javascript.html
3个等号表示“没有类型强制的平等”。使用三等于,值也必须在类型上相等。
0==false // true 0===false // false, because they are of a different type 1=="1" // true, auto type coercion 1==="1" // false, because they are of a different type
答案 1 :(得分:4)
优良作法是始终使用身份运算符(!==
和===
)并仅在需要时手动执行类型强制(例如{{1} }或Boolean(someVar)
)。
答案 2 :(得分:1)
好吧,我有点自己回答...... 5 ==“5”,但是5!==“5”,这可能是出乎意料的。我会赞扬任何有更深入洞察力的人。
答案 3 :(得分:0)
“==”在比较完成之前进行类型转换。这就是为什么5 ==“5”是真的而不是假的原因。
“===”不是这种转换,只要类型不相同,5 ===“5”就不一样了。