In a browser console, entering 1===1
evaluates to true
. Entering 1===1===1
evaluates to false
.
I assume that this
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===1
is 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
.
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.
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.
if 1==1==1 then it will be true
Correct behaviour. Since
1===1 // value is true
but
true===1 // it's false
There are two reasons for this:
so
1===1===1 // false