Javascript Truthy / Falsy Operation

时间:2018-02-14 12:39:29

标签: javascript casting truthiness

我有一个关于javascript truthy / falsy的问题

据我所知,包括负数在内的任何非零数字都是真实的。但如果是这种情况那么为什么

-1 == true //returns false

但也

-1 == false //returns false

有人能说些什么吗?我很感激。

4 个答案:

答案 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>
&#xD;&#xA;
&#xD;&#xA;
  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;
&#的xD;&#XA;
&#的xD;&#XA;

&#XA;