如何验证JavaScript中对象的存在?

以下工作:

if (!null)
   alert("GOT HERE");

但是这会抛出一个错误:

if (!maybeObject)
   alert("GOT HERE");

错误:

maybeObject没有定义。


当前回答

如果这是一个全局对象,你可以使用If (!window.maybeObject)

其他回答

我刚刚测试了上面的typeOf例子,没有一个适合我,所以我用了这个:

btnAdd = document.getElementById("elementNotLoadedYet"); if (btnAdd) { btnAdd。textContent = "Some text here"; }其他{ 警报(“没有发现!”); }

对我来说,这适用于dom对象:

if(document.getElementsById('IDname').length != 0 ){
   alert("object exist");
}

0和null是隐式指针。如果你不做算术,比较,或打印'0'到屏幕上,就没有必要实际输入它。其隐含的。就像隐含的那样。出于同样的原因,Typeof也不是必需的。手表。

if(obj) console.log(“exist”);

我没有看到request for a not或else,因为它不包括。就像我喜欢不符合问题的额外内容一样。让我们保持简单。

如果你只关心它的存在(它被宣布了吗?),认可的答案就足够了:

if (typeof maybeObject != "undefined") {
   alert("GOT THERE");
}

如果你关心它的实际值,你应该添加:

if (typeof maybeObject != "undefined" && maybeObject != null ) {
   alert("GOT THERE");
}

As typeof(null) == "object"

例如:bar = {x: 1, y: 2, z: null}

typeof( bar.z ) == "object" 
typeof( bar.not_present ) == "undefined" 

通过这种方式,您可以检查它既不是null也不是undefined,并且由于typeof在value不存在的情况下不会出错加上&&短路,因此您永远不会得到运行时错误。

就我个人而言,我建议在某个地方添加一个helper fn(让我们不要相信typeof()):

function exists(data){
   data !== null && data !== undefined
}

if( exists( maybeObject ) ){
    alert("Got here!"); 
}

除了检查对象/变量是否存在之外,您可能希望提供一个“最坏情况”输出,或者至少将其捕获到警报中,这样就不会被忽略。

检查、提供替代方案和捕捉错误的函数示例。

function fillForm(obj) {
  try {
    var output;
    output = (typeof obj !== 'undefined') ? obj : '';
    return (output);
  } 
  catch (err) {
    // If an error was thrown, sent it as an alert
    // to help with debugging any problems
    alert(err.toString());
    // If the obj doesn't exist or it's empty 
    // I want to fill the form with ""
    return ('');
  } // catch End
} // fillForm End

我创建这个也是因为我传递给它的对象可能是x, x.m, x.m[z],如果x.m不存在,则typeof x.m[z]将失败并报错。

我希望这能有所帮助。(顺便说一下,我是JS新手)