在浏览器控制台中,输入1===1
计算为true
. 输入1===1===1
计算为false
。
我认为这是因为评估语句的方式:
1 === 1 === 1
变成
(1 === 1) === 1
评估为
true === 1
这是false
。
它是否正确?如果不是,这种行为的真正原因是什么?
在浏览器控制台中,输入1===1
计算为true
. 输入1===1===1
计算为false
。
我认为这是因为评估语句的方式:
1 === 1 === 1
变成
(1 === 1) === 1
评估为
true === 1
这是false
。
它是否正确?如果不是,这种行为的真正原因是什么?
是的,你完全正确。这里有两个相等检查,它们具有相同的运算符优先级。第一个首先评估,然后其结果应用于下一个相等检查。
1===1===1
(1===1)===1
与which is true===1
which is相同false
,因为在这里您通过值及其类型进行检查。1==1==1
将导致true
,因为它仅通过值检查相等性,所以1==1==1
等于(1==1)==1
等于true==1
等于true
。
正确的行为。自从
1===1 // value is true
但
true===1 // it's false
有两个原因:
所以
1===1===1 // false
你提到的行为是正确的。
这是因为===
意味着基于类型和值的匹配。
true === 1
不匹配类型,但true == 1
基于值匹配。
如果 1==1==1 则为真