如何与一个空变量进行比较?

3

如果我将一个变量设置为0,那么与“”(空)进行比较时会出现奇怪的行为,返回true。如何检查变量是否真正为空?

tmp = 0;

if ( tmp != "")
{
    //do something - This is where the code goes.
}
else
{
   //isEmpty - I would expect to be here
}

尝试一下:if(!tmp)或者if ( tmp !== "")应该可以工作。 - Breezer
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Comparison_Operators - Ejaz
请仅返回翻译的文本:查看JavaScript的隐藏功能,详情请见https://dev59.com/AnVD5IYBdhLWcg3wL4cA - user2264587
尝试使用 tmp!==undefined - ShuklaSannidhya
4个回答

4

使用严格比较运算符===!==

使用==!=(称为抽象比较运算符),

如果两个操作数的类型不同,JavaScript会尝试将操作数转换为适当的类型进行比较。


如果你想检查一个变量是否未被定义,可以使用以下代码来判断:如果变量为空,则表示未定义。
if (typeof tmp !== "undefined") {
    // it exists!
}

我不确定"undefined"是否是我要找的,但严格比较对我来说是新的。现在代码走到了我期望的地方。 :) 谢谢! - Enigma

0
在JavaScript中,除了0NaNundefinedfalsenull之外的所有内容都被视为false。""被视为true
if (tmp) {

}

如果变量包含除了 0, NaN, undefined, falsenull 之外的任何值,则会执行上述 if 语句。

如果 tmp 是一个 string,则可以使用以下代码:

if (tmp !== "") {

}

===!==运算符在比较时不进行类型转换。


0
你所说的“空变量”是什么意思?如果你指的是一个空字符串,那么你应该使用“!==”来检查它。
if (tmp !== "")

0

JavaScript会隐式地将值转换为其他类型。如果要检查类型,可以使用!==运算符:

if ( tmp !== "")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接