为什么1 === 1 === 1假?

时间:2013-11-13 13:52:24

标签: javascript operators boolean-logic

在浏览器控制台中,输入1===1的评估结果为true。输入1===1===1的评估结果为false

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

1 === 1 === 1

变为

(1 === 1) === 1

评估为

true === 1

false

这是对的吗?如果没有,这种行为的真正原因是什么?

5 个答案:

答案 0 :(得分:40)

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

1===1===1(1===1)===1相同,true===1false,因为在这里您可以按值及其类型进行检查。 1==1==1将生成true,因为它仅按值检查相等性,因此1==1==1等于(1==1)==1等于true==1等于true

答案 1 :(得分:20)

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

比较

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

Example

答案 2 :(得分:3)

正确的行为。由于

1===1 // value is true

true===1 // it's false

这有两个原因:

  1. true是布尔类型,其中1是整数
  2. 简单地说,1不等于真。
  3. 所以

    1===1===1 // false
    

答案 3 :(得分:2)

您提到的行为是正确的。

因为===意味着基于类型和值进行匹配。 true === 1与类型不匹配,但true == 1根据值匹配。

答案 4 :(得分:-2)

如果1 == 1 == 1那么它将是真的