Javascript Truthy / Falsy 操作

Javascript Truthy / Falsy Operation

我有一个关于javascript真实/虚假

的问题

据我所知,任何非零数包括负数都是真实的。但如果是这样,那为什么

-1 == true //returns false

而且

-1 == false //returns false

有人可以解释一下吗?我将不胜感激。

当使用带有数字操作数和布尔操作数的 == 运算符时,布尔操作数首先转换为数字,并将结果与​​数字操作数进行比较。这使您的陈述等同于:

-1 == Number(true)

-1 == Number(false)

这又是

-1 == 1

-1 == 0

这说明了为什么您总是看到 false 结果。如果你强制转换发生在数字操作数上,你会得到你想要的结果:

Boolean(-1) == true //true

不,布尔值要么是 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

任何非零数计算为真,零计算为假。 这与等于 true/false.

不同

执行下面的代码(并将 -1 替换为不同的值)可以帮助您理解这一点:

if (-1) {
    true;
} else {
    false;
}

除了 @James Thorpe 的回答,如果你想识别零和 non-zero 数字你可以使用下面的代码:

console.log(Math.abs(-1) > 0);
console.log(Math.abs(0) > 0);
console.log(Math.abs(1) > 0);