为什么布尔比较中有3个相等的符号?

时间:2009-11-18 22:11:10

标签: javascript syntax

  

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

为什么我最近会看到很多javascript代码,其表达式如下所示:

if(val === "something")

为什么“===”而不只是“==”?有什么不同?我什么时候应该使用其中一种?

4 个答案:

答案 0 :(得分:8)

===不允许类型强制,所以这样的东西会返回false:

if (2 === '2') // false

“普通”javascript ==运算符确实允许类型强制,所以这将返回true:

if (2 == '2') // true

答案 1 :(得分:2)

var a = 3;
var b = "3";

if (a == b) {
  // this is true.
}

if (a === b) {
  // this is false.
}

答案 2 :(得分:1)

===通常称为身份运算符。被比较的值必须具有相同的类型和值才能被视为相等。 ==通常被称为等于运算符,并执行类型强制以检查相等性。

一个例子

1 == '1' // returns true even though one is a number, the other a string

1 === '1' // returns false. different datatypes
道格·克罗克福德在JavaScript the Good Parts google tech talk video中简要介绍了这一点。值得花一个小时观看。

答案 3 :(得分:0)

检查类型和值是否匹配。这很重要,因为(0 == false)为真,但(0 === false)不成立。