JavaScript等于“ 0”,返回true

时间:2019-11-20 02:12:02

标签: javascript

有人可以解释这种行为吗?

all

只是在控制台中注意到它,我希望这两个语句都是假的。我注意到,当仅LAST值为"2"=="3"=="4"=="5" >false "2"=="3"=="4"=="0" >true 时,true返回似乎是一个问题。不过这是一个字符串比较,所以我不确定为什么会这样。

6 个答案:

答案 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;