Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript等于;0“;回归真实_Javascript - Fatal编程技术网

Javascript等于;0“;回归真实

Javascript等于;0“;回归真实,javascript,Javascript,有人能解释一下这种行为吗: "2"=="3"=="4"=="5" >false "2"=="3"=="4"=="0" >true 只是在控制台中注意到了这一点,我希望这两个语句都是错误的。我注意到,当只有最后一个值是“0”时,true返回似乎是一个问题。不过这是一个字符串比较,所以我不确定为什么会发生这种情况。第二个结果最终计算为false==“0”。由于0为false,因此其计算结果为true console.log(false==“0”)JavaScript从左到右求值 你的

有人能解释一下这种行为吗:

"2"=="3"=="4"=="5"
>false
"2"=="3"=="4"=="0"
>true

只是在控制台中注意到了这一点,我希望这两个语句都是错误的。我注意到,当只有最后一个值是
“0”
时,
true
返回似乎是一个问题。不过这是一个字符串比较,所以我不确定为什么会发生这种情况。

第二个结果最终计算为
false==“0”
。由于0为false,因此其计算结果为
true


console.log(false==“0”)JavaScript从左到右求值

你的方程式基本上是
(“2”=“3”)=“4”)=“5”
(“2”=“3”)=“4”)=“0”

分解方程#1:

因此,第一个方程的计算结果为
false

分解方程#2:

因此,第二个等式的计算结果为
true
。这是由于将
“0”
等同为
false


如果要使用
=
(检查),则第二个等式的计算结果将为
true

JavaScript始终按从左到右的顺序计算表达式。 对于表达式a=b+c/d,先计算a,然后计算b,c,d

console.log(“2”=“3”=“4”=“5”)//假的
/* 
1.首先,它会将“2”==“3”计算为false
2.false==“4”==“5”,然后它将false==“4”计算为false
3.然后false==“5”再次为false
*/
console.log(“2”==“3”==“4”==“0”)//真的
/* 
1.首先,它将2==3计算为false
2.false==“4”==“0”,然后它将false==“4”计算为false
3.那么false==“0”为真,因为0为假

*/
在javascript false中,计算结果为0 i:e零

所以当你做“2”==“3”时,答案是0

0==“4”再次为假i:e 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”,即:e true

希望这个解释有帮助

祝你有愉快的一天


我认为它在做false==“0”==true类似于从左到右再进行一些计算,这是因为
false==false
是真的。这就是为什么我们需要使用===一个绝不能使用
=
操作符的好理由。一些JS操作符从左到右进行计算,
=
就是其中之一。其他的从右到左计算。“JavaScript总是从左到右顺序计算表达式。”不正确。它从左到右计算一些运算符,从右到左计算其他运算符。@JLRishe:我从来都不知道,你能分享一些例子吗?你可以看看这个。根据需要,一元运算符和赋值运算符是从右向左的。在
a=b=c=4+5
中,首先将
4+5
计算为9,然后依次计算
c=9
b=9
a=9
。还有,类似于
-~!如果为true,则将计算
!true
->
false
~false
->`-1
-(-1)`->
1
.console.log(布尔(“0”)==Boolean(0)),返回false。为什么?
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
"2" == "3" // false
false == "4" // false
false == "5" // false
"2" == "3" // false
false == "4" // false
false == "0" // true
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;