出于某种原因,我的老板改变了我在JS中获得的数据,因此,如果我收到字符串,现在我可以接收字符串或数字(从0到n)。直到今天,当我要发现旧的代码块时,测试的数字正好为0时没有问题。
原因是这段代码:
if(myObject.getData()) {
...
}
else {
//here's where I go
}
getData()
返回字符串和数字但是当数字为0
时,if
测试将其作为布尔值,结果始终为false
,而两行之后,在大括号内,我需要数字0
将其发送到服务器。
检查数据不是null
,而不是false
,而不是""
,甚至不是布尔值,以及"保留"的最佳方法是什么?我的0
?
答案 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
}
这种方法有两个主要好处: