问题
In a browser console, entering 1===1
evaluates to true
. Entering 1===1===1
evaluates to false
.
I assume that this is because of the way the statement is evaluated:
1 === 1 === 1
becomes
(1 === 1) === 1
which evaluates to
true === 1
which is false
.
Is this correct? If not, what's the real reason for this behaviour?
回答1:
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
.
回答2:
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.
回答3:
Correct behaviour. Since
1===1 // value is true
but
true===1 // it's false
There are two reasons for this:
- true is a boolean type where 1 is integer
- simply, 1 is not equal to true.
so
1===1===1 // false
回答4:
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.
回答5:
if 1==1==1 then it will be true
来源:https://stackoverflow.com/questions/19955573/why-is-1-1-1-false