javascript - 如果数字为 0,则针对空的测试失败

标签 javascript

出于某种原因,我的老板更改了我在 JS 中获取的数据,因此,如果我曾经收到字符串,现在我可以接收字符串或数字(从 0 到 n)。直到今天,当我发现要测试的数字恰好为 0 时,旧代码块才出现问题。

原因是这段代码:

if(myObject.getData()) {
    ...
}
else {
    //here's where I go
}

getData() 返回字符串和数字,但是当数字为 0 时,if 测试将其作为 bool 值和结果始终是 false,而两行之后,在大括号内,我需要数字 0 将其发送到服务器。

检查数据是否不是null、不是false、不是""、甚至不是 bool 值和"preserve"的最佳方法是什么"我的 0?

最佳答案

您可以在 if 语句中引入 OR 以使用严格相等运算符 (===) 检查它是否为数值 0 ):

var data = myObject.getData();
if ( data || data === 0 )

一些测试用例:

data = ""           // false
data = false        // false
data = undefined    // false
data = 0            // true
data = 1            // true
data = "test"       // true

关于javascript - 如果数字为 0,则针对空的测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31296921/

相关文章:

javascript - nodejs使用gm模块来处理图像,但我需要它同步

javascript - 在 JavaScript 中标记化

javascript - jQuery .stop() 与 UI .toggle() 幻灯片动画

php - 从本地 MySQL 自动填充外部站点上的表单字段

javascript - 使用javascript正确显示数据库中的日期

javascript - CSS & JavaScript - 无论如何要用 CSS 模拟这种 JS 行为?

javascript - 对存储在变量中的 xml 运行 Xpath(获取 "Uncaught TypeError: undefined is not a function")

javascript - 如何访问 swig 上的主模型对象?

javascript - 当脚本代码更改文本时返回输入的 javascript 堆栈跟踪

javascript - 如何在 Javascript 中访问 JSON 结构的子对象?