Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.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,在Java或其他类似语言中,我无法做到: a < b > c 现在,为什么结果是真的呢?因为Javascript愿意立即进行类型转换。布尔值true强制为数值1 请注意,1==true是true,但是1===true是falseJavaScript首先将布尔值true转换为一个数字进行比较。在这种情况下,true被强制转换为1 不过,许多对象不会被强制转换为数字。例如,{}为NaNTrue将转换为1。3大于1…+1。另外,ac将被计算为(ac,并且由于ac正在测试生成的强制转换整数

在Java或其他类似语言中,我无法做到:

a < b > c

现在,为什么结果是真的呢?

因为Javascript愿意立即进行类型转换。布尔值
true
强制为数值
1


请注意,
1==true
true
,但是
1===true
false

JavaScript首先将布尔值
true
转换为一个数字进行比较。在这种情况下,
true
被强制转换为
1


不过,许多对象不会被强制转换为数字。例如,
{}
NaN

True将转换为1。3大于1…

+1。另外,
ac
将被计算为
(ac
,并且由于
a
计算为布尔值,
>c
正在测试生成的强制转换整数(1或0)是否确实大于c。对我来说,所有这些解释构成了在遇到这样的代码时删除它的理由:-)
var t = 3;
var z = true;

t > z // will be true