Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 逻辑运算符前的字符串不会显示在警报()中_Javascript - Fatal编程技术网

Javascript 逻辑运算符前的字符串不会显示在警报()中

Javascript 逻辑运算符前的字符串不会显示在警报()中,javascript,Javascript,如果我执行此命令: alert( "Is 4 equal to 5 ? lets see " + 4 == 5 ) 它将逻辑值显示为false,但前面的字符串“Is 4等于5?Let see”丢失了,有人能解释为什么会这样吗 执行将发生在以下行: "Is 4 equal to 5 ? lets see " + 4 // "Is 4 equal to 5 ? lets see 4" "Is 4 equal to 5 ? lets see 4" == 5 // false alert(false)

如果我执行此命令:

alert( "Is 4 equal to 5 ? lets see " + 4 == 5 )

它将逻辑值显示为false,但前面的字符串“Is 4等于5?Let see”丢失了,有人能解释为什么会这样吗

执行将发生在以下行:

"Is 4 equal to 5 ? lets see " + 4 // "Is 4 equal to 5 ? lets see 4"
"Is 4 equal to 5 ? lets see 4" == 5 // false
alert(false);
你想要的是:

"Is 4 equal to 5 ? lets see " + (4 == 5)
评估结果如下:

4 == 5 // false
"Is 4 equal to 5 ? lets see " + false
alert("Is 4 equal to 5 ? lets see false")

您的输入将被比较为

"Is 4 equal to 5 ? lets see 4" == 5
将数字比较部分用括号括起来

alert("Is 4 equal to 5 ? lets see " + (4 == 5));
为什么会发生这种情况

因为
+
的优先级高于中的
=
比较运算符 这个因此,
+
对零件进行评估,然后得到零件 与数字相比

为什么括号起作用

()
分组具有最高优先级,因此将对其进行评估 第一。因此,它内部的表达式也将被计算


如果希望显示文本和false,请将比较结果存储在变量中,如
var result=4==5然后
警报(“4等于5?让我们看看”+结果)啊,我现在明白了,这也是有时显示错误布尔值的原因,因为tooThat的原因是
1+2==3
没有给出
1+false
/
NaN
操作顺序。疯狂是有秩序的,就像你在数学中做方程式一样。