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

以下工作:

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

但是这会抛出一个错误:

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

错误:

maybeObject没有定义。


当前回答

我觉得这样最简单

if(myobject_or_myvar)
    alert('it exists');
else
   alert("what the hell you'll talking about");

其他回答

或者,您都可以开始使用我的独占exists()方法,并能够做一些被认为不可能的事情。例如:

像:exists("blabla"),甚至:exists("foreignObject.guessedProperty.guessNext.propertyNeeded")这样的东西也是可能的…

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

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

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新手)

这里有很多半真半假的东西,所以我想把一些事情说清楚。

实际上,您无法准确地判断变量是否存在(除非您想将每两行都包装成一个try-catch块)。

原因是Javascript有一个臭名昭著的值undefined,这并不意味着变量没有定义,或者它不存在undefined !== not defined

var a;
alert(typeof a); // undefined (declared without a value)
alert(typeof b); // undefined (not declared)

所以一个存在的变量和另一个不存在的变量都可以报告给你未定义的类型。

至于@Kevin的误解,null == undefined。这是由于类型强制,这也是为什么Crockford一直告诉那些不确定这类事情的人总是使用严格的相等运算符===来测试可能的假值的主要原因。Null !== undefined给出了您可能期望的结果。请注意,foo != null是检查变量是否为undefined或null的有效方法。当然,你可以明确,因为这有助于可读性。

如果你限制这个问题来检查一个对象是否存在,typeof o == "object"可能是一个好主意,除非你不考虑数组对象,因为这也会被报告为对象的类型,这可能会让你有点困惑。更不用说typeof null也会给你一个对象,这是错误的。

你真正应该小心typeof、undefined、null、unknown和其他谜题的原始区域是宿主对象。他们不可信。他们几乎可以随心所欲地做任何肮脏的事情。所以要小心使用它们,如果可以的话检查它们的功能,因为这是使用一个可能根本不存在的功能的唯一安全方法。

将文本框值设置为一帧到内联帧使用div对齐选项卡面板。 所以首先,在设置值之前,我们需要检查所选择的标签面板框架可用或不使用以下代码:

Javascript代码:

/////////////////////////////////////////
<script>

function set_TextID()
            {
                try
                    {
                        if(!parent.frames["entry"])
                            {
                            alert("Frame object not found");    
                            }
                            else
                            {
                                var setText=document.getElementById("formx").value;
                                parent.frames["entry"].document.getElementById("form_id").value=setText;
                            }
                            if(!parent.frames["education"])
                            {
                            alert("Frame object not found");    

                            }
                            else
                            {
                                var setText=document.getElementById("formx").value;
                                parent.frames["education"].document.getElementById("form_id").value=setText;
                            }
                            if(!parent.frames["contact"])
                            {
                            alert("Frame object not found");    

                            }
                            else
                            {
                                var setText=document.getElementById("formx").value;
                                parent.frames["contact"].document.getElementById("form_id").value=setText;
                            }

                        }catch(exception){}
                }

</script>

你可以安全地在未定义的变量上使用typeof操作符。

如果它被赋值,包括null, typeof将返回非undefined的值。Typeof总是返回一个字符串。

因此

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