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);
我有一个关于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);