Javascript 检查值是否为真或0的简明方法是什么?

Javascript 检查值是否为真或0的简明方法是什么?,javascript,typescript,Javascript,Typescript,我试图简化检查typescript中的索引值是否为null或未定义 const indexValue: number; if(!!indexValue || indexValue === 0) { // Do something } 由于0是错误的,因此似乎需要在indexValue===0的条件下显式检查它 如果有更清晰、简洁的方法可以做到这一点?是的,有。因为这是一个索引值,所以您可能希望接受任何数字。这可能表明typeof indexValue==“nu

我试图简化检查typescript中的索引值是否为
null
未定义

    const indexValue: number;
    if(!!indexValue || indexValue === 0) {
     // Do something
    }
由于
0
是错误的,因此似乎需要在
indexValue===0
的条件下显式检查它


如果有更清晰、简洁的方法可以做到这一点?

是的,有。因为这是一个索引值,所以您可能希望接受任何数字。这可能表明
typeof indexValue==“number”
是正确的方法,因为这将拒绝
null
undefined
,但将接受
0
。但是,此条件也将接受其他不需要的值,例如
NaN
无穷大
、和
-无穷大
,它们都是数字

谢天谢地,该语言为我们提供了一个bulit-in函数,可以同时测试所有这些功能:。所以你的情况变成:

if (isFinite(indexValue)) {
    // ...
}
请注意,此函数将接受转换为有限数的字符串。还有,它只接受数字,但在IE中不受支持。如果要拒绝所有字符串,请将
isFinite()
检查与
typeof
检查结合使用:

if (typeof indexValue === "number" && isFinite(indexValue)) {
    // ...
}

“是真的还是0”,“是空的还是未定义的”,哪一个<代码>索引值!=空什么是
!!索引值
?为什么不
indexValue
?请注意
NaN
是falsy,但既不是未定义的,也不是null。您可能还希望拒绝
无限
-Infinity
。相反,请考虑<代码>(数字.iSimple(索引值))< /代码>,它将拒绝非数字、空、未定义、楠和无穷大。也许可以澄清一下你将使用这个数字做什么,因为一组不可接受的值取决于此。如果(indexValue!==undefined&&indexValue!==null){…}o,那么复杂的是什么呢