javascript - 什么是检查值是真值还是 0 的简洁方法?
问题描述
我试图简化检查索引值是否null
在undefined
打字稿中。
const indexValue: number;
if(!!indexValue || indexValue === 0) {
// Do something
}
由于0
它是虚假的,因此似乎需要在条件中明确检查indexValue === 0
.
如果有更清晰简洁的方法来做到这一点?
解决方案
就在这里。由于这是一个索引值,因此您可能希望接受任何数字。这可能表明这typeof indexValue === "number"
是正确的方法,因为这将拒绝null
和undefined
,但会接受0
。但是,此条件也将接受其他不需要的值,例如NaN
、Infinity
和-Infinity
,它们也都是数字。
值得庆幸的是,该语言为我们提供了一个内置函数,可以一次测试所有这些:isFinite()
. 所以你的条件变成:
if (isFinite(indexValue)) {
// ...
}
请注意,此函数将接受转换为有限数的字符串。还有Number.isFinite()
,它只接受数字,但在 IE 中不支持。如果要拒绝所有字符串,则将isFinite()
检查与typeof
检查结合起来:
if (typeof indexValue === "number" && isFinite(indexValue)) {
// ...
}
推荐阅读
- flutter - 使用 Flutter 和 Ferry 获取数据后无法使用来自 GraphQl 查询的数据
- reactjs - 为什么 useEffect 挂钩看不到我的对象?
- php - 循环遍历具有大量行数的 postgres 查询结果是否存在危险?
- python-3.x - 加入时如何强制绝对路径是相对的?
- reactjs - error_message: '请求的产品还没有准备好。请提供一个 webhook 或稍后再试一次请求',
- javascript - 类型错误:无法读取未定义的属性“值”(第 2 行,文件“自动填充 Google 文档”)
- c# - 为什么用 SharpGL 绘制的所有立方体都是白色的?
- python - 谷歌分析 API 问题
- python - 如何以大致相等的比例生成随机数据集
- vba - 在所有 powerpoint 文本框上设置“溢出时收缩文本”选项的 VBA 代码