Why is 1===1===1 false?

前端 未结 5 2100
我寻月下人不归
我寻月下人不归 2021-01-01 09:37

In a browser console, entering 1===1 evaluates to true. Entering 1===1===1 evaluates to false.

I assume that this

相关标签:
5条回答
  • 2021-01-01 09:42

    Yes, you're exactly right. Here you have two equality checks, which have the same operator precedence. First one evaluates first, then its result applies to the next equality check.

    1===1===1is the same as (1===1)===1 which is true===1 which is false, because here you check by values AND their types. 1==1==1 will result in true, because it checks equality by values only, so 1==1==1 equal to (1==1)==1 equal to true==1 equal to true.

    0 讨论(0)
  • 2021-01-01 09:45

    The behaviour that you mentioned is correct.

    Its because === implies matching based on type and value. true === 1 does not match on type, but true == 1 matches based on value.

    0 讨论(0)
  • 2021-01-01 09:50

    The === operator doesn't just test equality, but also type equality. Since an integer is not a boolean, true === 1 is false.

    Compare:

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

    Example.

    0 讨论(0)
  • 2021-01-01 09:55

    if 1==1==1 then it will be true

    0 讨论(0)
  • 2021-01-01 10:06

    Correct behaviour. Since

    1===1 // value is true
    

    but

    true===1 // it's false
    

    There are two reasons for this:

    1. true is a boolean type where 1 is integer
    2. simply, 1 is not equal to true.

    so

    1===1===1 // false
    
    0 讨论(0)
提交回复
热议问题