0

有两种方法可以检查变量或属性是否存在。

第一个断言没有返回虚假值。

1.

var testVar;
if(!testVar){

    //use testVar becuase it exists 

}

第二个明确地断言这两个条件。

2.

var testVar;

if(testVar !== undefined && testVar !== null){

    //use testVar becuase it exists 

}

为了检查对象/字符串/数字/数组是否存在,两者之间有什么区别吗?

4

3 回答 3

2

它们不一样。如果您尝试将{}or 1or or trueor "nyan cat" 喵!... 放入testVar,则它返回falsefor !testVar

var testVar = {};
if(!testVar){  //false
    //will not be executed, but testVar does exist
}

在此处输入图像描述

检查变量是否存在的更好方法:

typeof(randomVar); //undefined
typeof(window);    //object

附言

var testVar;
if(!testVar){
    //...
}

这实际上并不检查它是否存在。尝试

var testVar = "something";
if(!testVar){              //false
    console.log("Exist.");
}
//nothing happens.
于 2013-02-06T06:26:09.527 回答
0

您可以通过调用 Object.hasOwnProperty() 检查对象属性是否存在,但无法检查变量是否存在,因为您无法显式引用当前堆栈帧。

于 2013-02-06T06:28:01.847 回答
0

0、-0、null、false、NaN、未定义和空字符串 ""将被评估为 false。

如果值为 0 的 testVar 是有效条件,则第一个解决方案仍将其视为“假”。因此,第二个解决方案更好地为您服务。

于 2013-02-06T06:29:18.677 回答