如果数字为0

时间:2015-07-08 15:19:42

标签: javascript

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

原因是这段代码:

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

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

检查数据不是null,而不是false,而不是"",甚至不是布尔值,以及"保留"的最佳方法是什么?我的0

2 个答案:

答案 0 :(得分:3)

您可以在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

答案 1 :(得分:1)

反转您的要求,您似乎只需要非空字符串和数字。如果该假设是正确的,您可以使用typeof并执行以下操作:

var data = myObject.getData();

if((typeof data === 'string' && data !== '') || typeof data === 'number') {
  //...
}
else{
  //here's where I go
}

这种方法有两个主要好处:

  1. 输入格式应该是明确的,因此是自我记录的。
  2. 它可以防止任何未来的输入类型修改。