34

在浏览器控制台中,输入1===1计算为true. 输入1===1===1计算为false

我认为这是因为评估语句的方式:

1 === 1 === 1

变成

(1 === 1) === 1

评估为

true === 1

这是false

它是否正确?如果不是,这种行为的真正原因是什么?

4

5 回答 5

42

是的,你完全正确。这里有两个相等检查,它们具有相同的运算符优先级。第一个首先评估,然后其结果应用于下一个相等检查。

1===1===1(1===1)===1与which is true===1which is相同false,因为在这里您通过值及其类型进行检查。1==1==1将导致true,因为它仅通过值检查相等性,所以1==1==1等于(1==1)==1等于true==1等于true

于 2013-11-13T13:53:51.367 回答
20

===运算符不仅测试相等性,还测试类型相等性。由于整数不是布尔值,true === 1因此为假。

比较:

true == 1; // true
true === 1; // false

例子

于 2013-11-13T13:55:41.640 回答
3

正确的行为。自从

1===1 // value is true

true===1 // it's false

有两个原因:

  1. true 是一个布尔类型,其中 1 是整数
  2. 简单地说,1 不等于 true。

所以

1===1===1 // false
于 2013-11-13T14:09:34.020 回答
2

你提到的行为是正确的。

这是因为===意味着基于类型和值的匹配。 true === 1不匹配类型,但true == 1基于值匹配。

于 2013-11-13T13:57:11.083 回答
-2

如果 1==1==1 则为真

于 2013-11-15T02:53:43.800 回答