为什么JavaScript在非布尔值&;中选择较大的数字&;声明?
在JavaScript中,为什么JavaScript在非布尔值&;中选择较大的数字&;声明?,javascript,boolean-operations,fuzzy-logic,Javascript,Boolean Operations,Fuzzy Logic,在JavaScript中,0&&1的计算结果为0,这是两者中较低的一个。那么,为什么0.1&&1的计算结果为1,两者中较高的一个? 类似地,为什么0 | | 1计算为1,而0.1 | | 1计算为0.1与哪个值更大无关,操作符将为规范返回适当的值 在&&的情况下,如果第一个参数为false,将返回它。否则返回第二个。在您的示例中,0.1&&1,0.1是一个truth-y值,因此返回1。您可以很容易地尝试100000000&&0.1,并看到0.1返回。0&&1返回0的原因是0为false-y,因此
0&&1
的计算结果为0
,这是两者中较低的一个。那么,为什么0.1&&1
的计算结果为1
,两者中较高的一个?
类似地,为什么
0 | | 1
计算为1
,而0.1 | | 1
计算为0.1
与哪个值更大无关,操作符将为规范返回适当的值
在&&
的情况下,如果第一个参数为false,将返回它。否则返回第二个。在您的示例中,0.1&&1
,0.1
是一个truth-y值,因此返回1
。您可以很容易地尝试100000000&&0.1
,并看到0.1
返回。0&&1
返回0
的原因是0
为false-y,因此根据规范,返回第一个值
同样,使用
|
时,如果第一个参数为true,则将返回该参数。否则将返回第二个值。它与哪个值更大无关,运算符将返回规范的适当值
在&&
的情况下,如果第一个参数为false,将返回它。否则返回第二个。在您的示例中,0.1&&1
,0.1
是一个truth-y值,因此返回1
。您可以很容易地尝试100000000&&0.1
,并看到0.1
返回。0&&1
返回0
的原因是0
为false-y,因此根据规范,返回第一个值
同样,使用
|
时,如果第一个参数为true,则将返回该参数。否则将返回第二个。和&
和|
运算符不会返回基于不等式的值,例如
a&b
的作用如下:
if (a) {
return b;
}
else {
return a;
}
if (a) {
return a;
}
else {
return b;
}
a | | b
的作用如下:
if (a) {
return b;
}
else {
return a;
}
if (a) {
return a;
}
else {
return b;
}
if
语句基于“truthy”和“false”值的概念,其中0
、NaN
、null
、未定义的
、'
和false
都是“false”。所有其他价值观都是“真实的”
0&&1
计算结果为0
,因为0
是错误的。0.1&&1
的计算结果为1
,因为0.1
是真实的。和&
和|
运算符不会基于诸如
之类的不等式返回值
a&b
的作用如下:
if (a) {
return b;
}
else {
return a;
}
if (a) {
return a;
}
else {
return b;
}
a | | b
的作用如下:
if (a) {
return b;
}
else {
return a;
}
if (a) {
return a;
}
else {
return b;
}
if
语句基于“truthy”和“false”值的概念,其中0
、NaN
、null
、未定义的
、'
和false
都是“false”。所有其他价值观都是“真实的”
0&&1
计算结果为0
,因为0
是错误的。0.1&&1
的计算结果为1
,因为0.1
是真实的。您应该检查一下
基本上,&&将取两个中的第一个,如果它是假的,否则将取第二个
| |的情况正好相反。你应该看看这个
基本上,&&将取两个中的第一个,如果它是假的,否则将取第二个
| |的情况正好相反。发生了几件不同的事情: 0是按位
false
,而0以外的任何数字的计算结果都是true
,因此表达式0和&1
的计算结果都是false和&true
,这当然是false
1是按位true
,根据上述,任何数字0也计算为true
,因此0.1&&1
计算为true&&true
,即true
使用上述信息:
0 | | 1
的计算结果为false | | true
,即true
最后一个例子可能是最有趣的一个,它与操作员短路有关
逻辑or运算符(|
)遇到计算结果为true
的值时会短路或停止计算。因此,如果在赋值操作中使用逻辑or,它将返回表达式中的第一个true
值
因此,0.1 | | 1
返回0.1。但是,如果要计算1 | | 0.1
,它将返回1
另一方面,逻辑and运算符(
&&
)遇到一个计算结果为false
的值时,它将短路。发生了几种不同的情况:
0是按位false
,而0以外的任何数字的计算结果都是true
,因此表达式0和&1
的计算结果都是false和&true
,这当然是false
1是按位true
,根据上述,任何数字0也计算为true
,因此0.1&&1
计算为true&&true
,即true
使用上述信息:
0 | | 1
的计算结果为false | | true
,即true
最后一个例子可能是最有趣的一个,它与操作员短路有关
逻辑or运算符(|
)遇到计算结果为true
的值时会短路或停止计算。因此,如果在赋值操作中使用逻辑or,它将返回表达式中的第一个true
值
因此,0.1 | | 1
返回0.1。但是,如果要计算1 | | 0.1
,它将返回1
另一方面,逻辑and运算符(&&
)将