有人可以解释这种行为吗?
all
只是在控制台中注意到它,我希望这两个语句都是假的。我注意到,当仅LAST值为"2"=="3"=="4"=="5"
>false
"2"=="3"=="4"=="0"
>true
时,true
返回似乎是一个问题。不过这是一个字符串比较,所以我不确定为什么会这样。
答案 0 :(得分:2)
第二个最终取值为db.world.find( { country : { '$exists' : true } } ,{continent:1} ).count().sort( { c : -1 } )
。由于0为假,因此计算为false == "0"
。
true
答案 1 :(得分:2)
JavaScript从左到右求值。
您的方程式本质上是(("2"=="3")=="4")=="5"
和(("2"=="3")=="4")=="0"
。
打破等式#1:
"2" == "3" // false
false == "4" // false
false == "5" // false
因此,第一个方程的求值为false
。
打破等式#2:
"2" == "3" // false
false == "4" // false
false == "0" // true
因此,第二个方程的计算结果为true
。这是由于truthiness将"0"
等同为false
。
如果要使用===
(检查strict equality),则第二个等式的计算结果为true
。
答案 2 :(得分:0)
step1: "2"=="3"=="4"=="5"
step2: false=="4"=="5"
step3: false=="5"
step4: false
step1: "2"=="3"=="4"=="0"
step2: false=="4"=="0"
step3: false=="0"
step4: true
答案 3 :(得分:0)
JavaScript始终按从左到右的顺序评估表达式。 对于表达式a = b + c / d,先求值a,然后求b,c,d
console.log("2"=="3"=="4"=="5"); //false
/*
1. First it will evaluate "2"=="3" as false
2. false=="4"=="5" Then it will evaluate false=="4" as false
3. then false=="5" is false again
*/
console.log("2"=="3"=="4"=="0"); //true
/*
1. First it will evaluate 2==3 as false
2. false=="4"=="0" Then it will evaluate false=="4" as false
3. then false=="0" is true , because 0 is false
*/
答案 4 :(得分:0)
在javascript中,false的取值为0,即零。
因此,当您执行“ 2” ==“ 3”时,答案为0
0 ==“ 4”再次为假,即为0
0 ==“ 5”再次计算为false。因此,“ 2” ==“ 3” ==“ 4” ==“ 5”的答案是错误的。
在第二个语句中,“ 2” ==“ 3” ==“ 4” ==“ 0” “ 2” ==“ 3” ==“ 4”的计算结果为false。
并且false == 0的结果为true。 因此,“ 2” ==“ 3” ==“ 4” ==“ 0”的答案是false ==“ 0”,即是。
希望说明会有所帮助。
祝你有美好的一天!
答案 5 :(得分:0)
Because this case "==" compare number values instead of boolean values Step 1 : "2"=="3" //"2" == "3" ? Return false Step 2 : Number(false)==Number("4") //0 == 4 ? Return false Step 3 : Number(false)==Number("0") //0 == 0 ? Return true try this: console.log("A"=="A"==1) Step 1 : "A"=="A" //"A" == "A" ? Return True Step 2 : Number(true) == 1 // 1 == 1 ? Return true;