Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS:检查是否存在等于0的变量_Javascript - Fatal编程技术网

Javascript JS:检查是否存在等于0的变量

Javascript JS:检查是否存在等于0的变量,javascript,Javascript,我有一段代码,使用下面的示例中的if语句测试变量的存在性。如果设置了var,我需要做一件事,如果没有设置,我需要做另一件事。在某个测试用例中,var需要设置为0,但这与JS中有一个未设置的var是一样的,显然: var toMatch; toMatch = 0; if (!toMatch) { document.write("no"); } else { document.write(toMatch); } // html is "no" 所以我的问题是,如果var的值合法

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

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

// html is "no"

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

在过去,我使用了一种变通方法,比如将初始值设置为一个足够高的数字,这样就不太可能传递给函数,但在我看来,这似乎很难。有更好的方法吗

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


对于这种情况,三重等于是严格的比较运算符。请看这个问题:

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

您应该使用恒等式运算符
==

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

这也值得理解。

您可以看到名称是否未定义为:

if (typeof bad_name === "undefined") {
而不是

if (toMatch)
使用


请注意,
undefined
不是关键字,理论上可以被覆盖。建议使用
if(typeof(toMatch)!==“undefined”)
或在匿名函数上使用
undefined
的额外参数关闭代码。您可能还想提到,要检查存在性(不一定是特定值),您可以这样做:
if(typeof toMatch!==“undefined”){(void 0)
代替
未定义的
,)+1代替
x===undefined
代替
typeof x===“undefined”
“unset”与
未定义的
相同。这个测试会起作用的。(它们中的任何一个)-1因为在与null/undefined(关键字)No进行比较时,您应该始终使用绝对相等===不,
x==null
相当于
x==null | x==undefined
。与
null
进行比较是您应该使用
=
的唯一情况(例如,jQuery样式指南认可这种做法)。null和undefined是保留字这一事实与此无关。我知道这一点,但这只是懒惰。。。您允许可能的异常,除非这是您正在寻找的特定行为。好的JavaScript实践总是说使用绝对平等,但我在所有代码中发现IE中有1到2处有缺陷,所以我必须使用相对平等。当然jQuery支持这一点,它们是最终的跨浏览器库。这就是为什么他们在市场份额中占有如此巨大的份额。你很少真正关心
null
undefined
之间的区别。如果
toMatch
是一个全局变量,那么我建议使用
typeof
检查,但因为(显然)不是,所以不会有任何异常——函数和局部变量的参数在未定义的情况下访问它们时不会抛出异常。我在IE方面做了很多发展;我可以向你保证这个比较没有错。我没说错,我说的是懒惰。。。程序员天生懒惰,这就是为什么我们编程,我们发现问题并尝试编写代码来解决它,因为。。。跳转实际上是数学,我有一个计算器。的类型是一个运算符,而不是一个方法。应该是
if(typeof bad_name===undefined)
当我第一次看到这个符号时,我也都是WTF。。。告诉您一些有关强制转换的信息,如果您深入研究,它也将帮助您进行属性解析。还值得注意的是,您应该检查var是如何创建的,如果它是用户提交的表单,那么if(toMatch==“0”)可能会起作用,这就是我的情况,因为所有接受的答案都失败了
if (toMatch == null)