我有一段代码测试变量的存在,使用if语句,如下例所示。如果设置了var,我需要做一件事,如果没有设置则需要做一件事。在某个测试用例中,var需要设置为0,但这与JS中的unset变量相同,显然:
var toMatch;
toMatch = 0;
if (!toMatch) {
document.write("no");
} else {
document.write(toMatch);
}
// html is "no"
所以我的问题是,如果var的值合法为零,我如何测试var。我应该指出,在我的函数中,可能传递的值是0-40 +。
过去我曾经使用过类似的工作,比如将初始值设置为足够高的数字,以至于它不太可能被传递给函数,但这对我来说似乎很糟糕。有没有更好的方法呢?
答案 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
答案 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);
}