JS:检查var的存在是否等于0

时间:2012-02-07 20:57:41

标签: javascript

我有一段代码测试变量的存在,使用if语句,如下例所示。如果设置了var,我需要做一件事,如果没有设置则需要做一件事。在某个测试用例中,var需要设置为0,但这与JS中的unset变量相同,显然:

var toMatch;
toMatch = 0;
if (!toMatch) {
    document.write("no");
} else {
    document.write(toMatch);
}

// html is "no"

jsFiddle

所以我的问题是,如果var的值合法为零,我如何测试var。我应该指出,在我的函数中,可能传递的值是0-40 +。

过去我曾经使用过类似的工作,比如将初始值设置为足够高的数字,以至于它不太可能被传递给函数,但这对我来说似乎很糟糕。有没有更好的方法呢?

4 个答案:

答案 0 :(得分:24)

var toMatch;
toMatch = 0;
if (toMatch === 0) { // or !== if you're checking for not zero
    document.write("no");
} else {
    document.write(toMatch);
}

toMatch === 0将检查零。

toMatch === undefined会检查undefined

对于这种情况,三等于是严格的比较运算符。看到这个有福的问题:Difference between == and === in JavaScript

答案 1 :(得分:5)

而不是

if (toMatch)

使用

if (toMatch == null)

答案 2 :(得分:2)

您可以通过以下方式查看名称是否未定义:

if (typeof bad_name === "undefined") {

答案 3 :(得分:0)

Javascript在值和布尔检查方面有点滑稽。我建议在Javascript中阅读Truthy and Falsey

您应该使用身份不等式运算符!==

var toMatch;
toMatch = 0;
if (toMatch !== 0) {
    document.write("no");
} else {
    document.write(toMatch);
}

同样值得理解the differences between == and ===