基于这些规则:
Falsy:
真理: Everything
我找不到正确的解释,为什么在下面的测试中,只有数字1评估为"true“
0 == true ("false")
1 == true ("true")
2 == true ("false")
othernumber == true ("false")
发布于 2018-09-14 03:58:23
使用==
与使用if(something)
不同,此测试将给出您预期的结果:
function truthyFalsyTest()
{
if(0)
{
console.log("true");
}
else
{
console.log("false");
}
if(1)
{
console.log("true");
}
else
{
console.log("false");
}
if(2)
{
console.log("true");
}
else
{
console.log("false");
}
if(2222)
{
console.log("true");
}
else
{
console.log("false");
}
}
truthyFalsyTest();
发布于 2018-09-14 04:02:00
In JavaScript (==)是一个执行类型转换的相等运算符运算符。更严格的(===)标识运算符不会进行类型转换。
例如,即使数字不是布尔值,如果使用(==)运算符,也可以在需要布尔值的地方使用数值。
但是,如果您强制使用更严格的( === )运算符,您将看到'1 === true‘的计算结果为false。
发布于 2018-09-14 04:08:25
0为假,这并不意味着其他数字将为真。简单的例子。如果您在条件中使用===,那么您将看到所有数字的false。
(0 == true) // false
(1 == true) // true
它工作得很好。但是,在下面的示例中,我没有使用not运算符(!)在这种情况下。因此,如果条件为true,则应输出true,否则输出false。尽管如此,它还是会给你带来相反的结果。
if(0){console.log("true")}else{console.log("false")} // false
if(1){console.log("true")}else{console.log("false")} // true
if(15){console.log("true")}else{console.log("false")} // true
现在,如果你将数字转换成布尔值,那么它会给出你所想的结果。
Boolean(0) == true // false
Boolean(1) == true // true
Boolean(2) == true // true
Boolean(othernumber) == true // true
谢谢
https://stackoverflow.com/questions/52320839
复制相似问题