JavaScript 判断对象是否存在的几种写法

在平日的前端开发中,我们会经常遇到一个问题,就是 “某某某对象未定义或者underfined”,为了避免这样的问题,我们在用一个对象或者变量的时候得预先判断,然后做下一步操作,判断对象是否存在的方法有很多种,大致总结了下有如下:

  • 第一种

    1
    2
    3
    if (!myObj) {
      var myObj = { };
    }
  • 第二种

    1
    2
    3
    if (!window.myObj) {
      var myObj = { };
    }
  • 第三种

    1
    2
    3
    if (!this.myObj) {    
    this.myObj = { };
    }
  • 第四种

    1
    2
    3
    4
    var global = this;  
    if (!global.myObj) {
      global.myObj = { };
    }
  • 第五种

    1
    2
    3
    4
    if (typeof myObj == "undefined") 
    {    
    var myObj = { };  
    }
  • 第六种

    1
    2
    3
    4
    if (myObj == undefined) 
    {    
    var myObj = { };
    }
  • 第七种

    1
    2
    3
    if (myObj === undefined) {    
    var myObj = { };
    }
  • 第八种

    1
    2
    3
    4
    if (myObj == null) 
    {    
    var myObj = { };
    }
  • 第九种

    1
    2
    3
    4
    if (!('myObj' in window)) 
    {    
    window.myObj = { };
    }
  • 第十种

    1
    2
    3
    4
    if (!this.hasOwnProperty('myObj')) 
    {    
    this.myObj = { };
    }

####总结:

  1. 如果只判断对象是否存在,推荐使用第五种写法。

  2. 如果除了对象是否存在,还要判断对象是否有null值,推荐使用第一种写法。

  3. 除非特殊情况,所有变量都应该使用var命令声明。

  4. 为了跨平台,建议避免使用window表示顶层对象。

  5. 在Javascript语言中,null和undefined容易产生混淆。在可能同时涉及两者的情况下,建议使用”精确比较”运算符(===)。

(此文转至于阮老师的博客)