如何检查变量是否为空?

时间:2010-12-05 22:17:41

标签: javascript comparison null-check

我知道以下是JavaScript中检查变量是否不是null的两种方法,但我很困惑哪种方法最适合使用。

我应该这样做:

if (myVar) {...}

if (myVar !== null) {...}

9 个答案:

答案 0 :(得分:355)

它们并不等同。如果if truthy (即在条件中评估为myVar),第一个将执行true语句后面的块,而第二个将执行块如果myVar是除null以外的任何值。

JavaScript中唯一不真实的值是以下(a.k.a. falsy 值):

  • null
  • undefined
  • 0
  • ""(空字符串)
  • false
  • NaN

答案 1 :(得分:54)

以下是测试变量是否为NULL的方法:

if (myVar !== null) {...}

如果myVar不为空,将执行该块..如果myVar未定义或为false或0NaN或其他任何内容,将执行该块。

答案 2 :(得分:43)

请阅读此帖:http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/

它总体上有一些很好的JavaScript技巧,但它提到的一件事是你应该检查null:

if(myvar) { }

它还提到了你可能没有意识到的被认为是“虚假”的东西。

答案 3 :(得分:7)

我刚遇到另一种可能的情况。

我做了一个ajax调用,并以字符串格式将数据恢复为null。我必须这样检查:

if(value != 'null'){}

因此,null是一个读取“null”而不是真正为null的字符串。

编辑:应该理解,我不是以应该完成的方式销售它。我有一个场景,这是唯一可行的方法。我不确定为什么......也许编写后端的人正在错误地呈现数据,但无论如何,这都是现实生活。令人沮丧的是,有人认为这不太正确,然后由实际上有帮助的人投票。

答案 4 :(得分:2)

这里有全部(src):

如果

enter image description here

== (否定!=

enter image description here

=== (否定!==

enter image description here

所以

    仅当if(myVar) { code }等于:myVar或您从未定义变量false, 0, "", null, undefined, NaN时,myVar中的
  • 代码不会执行(然后代码停止执行并抛出异常)。
  • 仅当if(myVar !== null) {code}等于myVar或您从未定义时(抛出异常),null中的
  • 代码将不会执行。

答案 5 :(得分:1)

如果myVar为null,那么如果block不执行,则执行。

if (myVar != null) {...}

答案 6 :(得分:1)

如果(0)表示false,则如果(-1或除0以外的任何数字)表示true。以下值不为true,null,undefined,0,“”空字符串,false,NaN

从不使用编号类型,如id

      if (id) {}

对于ID类型(可能值为0),我们不能使用if(id){},因为if(0)表示假,无效,我们希望它表示有效的真实ID号。

因此对于id类型,我们必须使用以下内容:

   if ((Id !== undefined) && (Id !== null) && (Id !== "")){
                                                                                
                                                                            } else {

                                                                            }
                                                                            

对于其他字符串类型,我们可以使用if(string){},因为null,undefined,空字符串都将评估为false,这是正确的。

       if (string_type_variable) { }

答案 7 :(得分:-1)

有时甚至没有定义它更好地准备。 为此,我使用了typeof

if(typeof(variable) !== "undefined") {
    //it exist
    if(variable !== null) {
        //and is not null
    }
    else {
        //but is null
    }
}
else {
    //it doesn't
}

答案 8 :(得分:-3)

您在此列出的两个条件语句并不比彼此更好。您的使用取决于具体情况。在第二个例子中你有一个拼写错误。感叹号后应该只有一个等号。

第一个示例确定 myVar 中的值是否为true并执行 {...}

内的代码

第二个示例评估 myVar 是否不等于null,如果该情况为真,它将在 {...}

内执行您的代码

我建议您查看有关更多技巧的条件语句。熟悉它们后,您就可以决定何时需要它们。