是否有必要使用===比较Javascript中的字符串或者==足够?

时间:2012-08-08 13:12:50

标签: javascript

  

可能重复:
  JavaScript === vs == : Does it matter which “equal” operator I use?

我可以理解为什么在比较数字,布尔值,空字符串等时由于意外的类型转换而需要===,例如。

var foo = 1; 
var bar = true; 
// bar == foo => true
// bar === foo => false

但是,在将变量与 非空 字符串文字进行比较时,==是否会引入错误?在这种情况下使用==而不是===会更有效吗?

4 个答案:

答案 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

来源 Difference between == and === in JavaScript

答案 1 :(得分:4)

优良作法是始终使用身份运算符(!=====)并仅在需要时手动执行类型强制(例如{{1} }或Boolean(someVar))。

A fun fiddle

答案 2 :(得分:1)

好吧,我有点自己回答...... 5 ==“5”,但是5!==“5”,这可能是出乎意料的。我会赞扬任何有更深入洞察力的人。

答案 3 :(得分:0)

“==”在比较完成之前进行类型转换。这就是为什么5 ==“5”是真的而不是假的原因。

“===”不是这种转换,只要类型不相同,5 ===“5”就不一样了。