在浏览器控制台中,输入1===1
的评估结果为true
。输入1===1===1
的评估结果为false
。
我认为这是因为评估语句的方式:
1 === 1 === 1
变为
(1 === 1) === 1
评估为
true === 1
是false
。
这是对的吗?如果没有,这种行为的真正原因是什么?
答案 0 :(得分:40)
是的,你说得对。这里有两个相等检查,它们具有相同的运算符优先级。首先评估第一个,然后将其结果应用于下一个等式检查。
1===1===1
与(1===1)===1
相同,true===1
是false
,因为在这里您可以按值及其类型进行检查。 1==1==1
将生成true
,因为它仅按值检查相等性,因此1==1==1
等于(1==1)==1
等于true==1
等于true
。
答案 1 :(得分:20)
答案 2 :(得分:3)
正确的行为。由于
1===1 // value is true
但
true===1 // it's false
这有两个原因:
所以
1===1===1 // false
答案 3 :(得分:2)
您提到的行为是正确的。
因为===
意味着基于类型和值进行匹配。
true === 1
与类型不匹配,但true == 1
根据值匹配。
答案 4 :(得分:-2)
如果1 == 1 == 1那么它将是真的