我有一个关于javascript truthy / falsy的问题
据我所知,包括负数在内的任何非零数字都是真实的。但如果是这种情况那么为什么
-1 == true //returns false
但也
-1 == false //returns false
有人能说些什么吗?我很感激。
答案 0 :(得分:6)
将-1 == Number(true)
运算符与数字操作数和布尔操作数一起使用时,首先将布尔操作数转换为数字,并将结果与数字操作数进行比较。这使你的陈述相当于:
-1 == Number(false)
和
-1 == 1
反过来
-1 == 0
和
false
这表明您总是看到Boolean(-1) == true //true
结果的原因。如果强制转换发生在数字操作数上,则会得到您所追求的结果:
<tr>
答案 1 :(得分:1)
不,布尔值可以是0(假)或1(真),就像一点。
以下是一个例子:
console.log(0 == false); // returns true => 0 is equivalent to false
console.log(1 == true); // returns true => 1 is equivalent to true
console.log(-1 == false); // returns false => -1 is not equivalent to false
console.log(-1 == true); // returns false => -1 is not equivalent to true
答案 2 :(得分:1)
任何非零数字评估为true,零评估为false。 这与等于真/假不一样。
执行下面的代码(并用不同的值替换-1)可以帮助您理解这一点:
if (-1) {
true;
} else {
false;
}
答案 3 :(得分:0)
除 @James Thorpe 答案外,如果您想识别零和非零数字,可以使用以下代码:
&#xA;&#xA; < p> console.log(Math.abs(-1)&gt; 0) ;&#xD;&#xA; console.log(Math.abs(0)&gt; 0);&#xD;&#xA; console.log(Math.abs(1)&gt; 0);
&#的xD;&#XA;