检查JavaScript中是否存在对象

2020/10/03 14:21 · javascript ·  · 0评论

如何验证JavaScript中是否存在对象?

以下作品:

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

但这会引发错误:

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

错误:

maybeObject 没有定义。

您可以typeof在未定义的变量上安全地使用运算符。

如果已分配了任何值(包括null),typeof将返回除undefined以外的值。typeof总是返回一个字符串。

因此

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

这里有很多真相,所以我想我把一些事情弄清楚了。

实际上,您无法准确判断变量是否存在(除非您想将第二行包装到try-catch块中)。

原因是Javascript具有如此臭名昭著的价值,undefined这并不意味着该变量未定义或不存在。undefined !== not defined

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

因此,既存在的变量,又一个不存在的变量都无法报告undefined 类型。

至于@Kevin的误解,null == undefined这是由于类型强制导致的,这是Crockford不断告诉每个不确定此类事情的人始终使用严格的相等运算符===来测试可能为假的值的主要原因。null !== undefined给您您可能期望的。另请注意,这foo != null可能是检查变量既不是undefined也不是的有效方法null当然,您可以明确一些,因为这可能有助于提高可读性。

如果将问题限制为检查对象是否存在,则typeof o == "object"可能是一个好主意,除非您不考虑数组对象,因为据报道这也是其类型object,可能会使您有些困惑。更何况这typeof null也会给您object带来根本的错误。

太极区,您真的应该小心typeofundefinednullunknown等misteries是主机对象。他们不能被信任。他们几乎可以随意做任何他们想做的肮脏的事情。因此,请谨慎使用它们,如果可以的话,请检查其功能,因为这是使用甚至可能不存在的功能的唯一安全方法。

您可以使用:

if (typeof objectName == 'object') {
    //do something
}

两种方式。

局部变量的typeof

您可以使用typeof测试本地对象:

if (typeof object !== "undefined") {}

全局变量的窗口

您可以通过检查窗口对象来测试一个全局对象(在全局范围内定义的一个对象):

if (window.FormData) {}

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

您可以使用“ typeof”。

if(typeof maybeObject != "undefined")
    alert("GOT HERE");

我曾经if(maybeObject)在我的JavaScript中只做一个空检查。

if(maybeObject){
    alert("GOT HERE");
}

因此,仅当maybeObject-是对象时,才会显示警报。我的网站上有一个例子。

https://sites.google.com/site/javaerrorsandsolutions/home/javascript-dynamic-checkboxes

该线程是在很早以前打开的。我认为,与此同时,使用三元运算符是最简单的选择:

maybeObject ? console.log(maybeObject.id) : ""

我刚刚从上面测试了typeOf示例,但没有一个适合我,因此我使用了以下示例:

    btnAdd = document.getElementById("elementNotLoadedYet");
    if (btnAdd) {
       btnAdd.textContent = "Some text here";
    } else {
      alert("not detected!");
    }

除了检查对象/变量的存在之外,您可能还想提供“最坏情况”输出或至少将其捕获到警报中,以免引起注意。

检查,提供替代方法并捕获错误的函数示例。

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,xm,xm [z]和typeof xm [z],如果xm不存在,它将因错误而失败。

希望对您有所帮助。(顺便说一句,我是JS新手)

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

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

如果您只关心它的存在(是否已声明?),那么批准的答案就足够了:

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

如果您关心它的实际值,则应添加:

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

typeof( null ) == "object"

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

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

这样,您可以检查它是否不是nullundefined,并且typeof如果值不存在加上&&短路也不会出错,那么您将永远不会遇到运行时错误。

就个人而言,我建议在某处添加一个辅助函数fn(并且不要信任typeof()):

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

if( exists( maybeObject ) ){
    alert("Got here!"); 
}
if (n === Object(n)) {
   // code
}
if (maybeObject !== undefined)
  alert("Got here!");

使用div alignmnt选项卡式面板将Textbox值设置为一帧以内联框架。因此,首先,在设置该值之前,我们需要使用以下代码检查选定的选项卡式面板框架是否可用:

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>

0和null是隐式指针。如果您不进行算术运算,比较或在屏幕上打印“ 0”,则无需实际输入。其隐式。如暗示。出于相同的原因,也不需要Typeof。看。

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

我没有看到不要求的请求,否则就没有包含。我非常喜欢多余的内容,这些内容都不适合这个问题。让我们保持简单。

认为这是最简单的

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

或者,您都可以开始使用我的独占存在()方法,并且能够做被认为不可能的事情。即:

事情是这样:exists("blabla")或甚至: exists("foreignObject.guessedProperty.guessNext.propertyNeeded")也可以...

本文地址:http://javascript.askforanswer.com/jianchajavascriptzhongshifoucunzaiduixiang.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!