溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

javascript如何判斷對象是不是存在

發布時間:2021-09-09 09:34:02 來源:億速云 閱讀:210 作者:小新 欄目:web開發

這篇文章給大家分享的是有關javascript如何判斷對象是不是存在的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

判斷方法:1、用“if(!Obj)”語句;2、用“if(!window.Obj)”;3、用“if(!this.Obj)”;4、用“if(typeof Obj=="undefined")”;5、用“if(Obj==undefined)”等等。

本教程操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

javascript判斷對象是否存在的方法

現在,我們要判斷一個全局對象myObj是否存在,如果不存在,就對它進行聲明。用自然語言描述的算法如下:

  if (myObj不存在){
    聲明myObj;
  }

下面給大家分享10種實現方法:

方法1:

  if (!myObj) {
    var myObj = { };
  }

方法2:

除了var命令,還可以有另一種改寫,也能得到正確的結果:

  if (!window.myObj) {
    myObj = { };
  }

window是javascript的頂層對象,所有的全局變量都是它的屬性。所以,判斷myobj是否為空,等同于判斷window對象是否有myobj屬性,這樣就可以避免因為myObj沒有定義而出現ReferenceError錯誤。不過,從代碼的規范性考慮,最好還是對第二行加上var:

  if (!window.myObj) {
    var myObj = { };
  }

或者寫成這樣:

  if (!window.myObj) {
    window.myObj = { };
  }

方法3:

上面這種寫法的缺點在于,在某些運行環境中(比如V8、Rhino),window未必是頂層對象。所以,考慮改寫成:

  if (!this.myObj) {
    this.myObj = { };
  }

在全局變量的層面中,this關鍵字總是指向頂層變量,所以就可以獨立于不同的運行環境。

方法4:

但是,上面這樣寫可讀性較差,而且this的指向是可變的,容易出錯,所以進一步改寫:

  var global = this;
  if (!global.myObj) {
    global.myObj = { };
  }

用自定義變量global表示頂層對象,就清楚多了。

方法5:

還可以使用typeof運算符,判斷myObj是否有定義。

  if (typeof myObj == "undefined") {
    var myObj = { };
  }

這是目前使用最廣泛的判斷javascript對象是否存在的方法。

方法6:

由于在已定義、但未賦值的情況下,myObj的值直接等于undefined,所以上面的寫法可以簡化:

  if (myObj == undefined) {
    var myObj = { };
  }

這里有兩個地方需要注意,首先第二行的var關鍵字不能少,否則會出現ReferenceError錯誤,其次undefined不能加單引號或雙引號,因為這里比較的是undefined這種數據類型,而不是"undefined"這個字符串。

方法7:

上面的寫法在"精確比較"(===)的情況下,依然成立:

  if (myObj === undefined) {
    var myObj = { };
  }

方法8:

根據javascript的語言設計,undefined == null,所以比較myObj是否等于null,也能得到正確結果:

  if (myObj == null) {
    var myObj = { };
  }

不過,雖然運行結果正確,但是從語義上看,這種判斷方法是錯的,應該避免。因為null指的是已經賦值為null的空對象,即這個對象實際上是有值的,而undefined指的是不存在或沒有賦值的對象。因此,這里只能使用"比較運算符"(==),如果這里使用"精確比較運算符"(===),就會出錯。

方法9:

還可以使用in運算符,判斷myObj是否為頂層對象的一個屬性:

  if (!('myObj' in window)) {
    window.myObj = { };
  }

方法10:

最后,使用hasOwnProperty方法,判斷myObj是否為頂層對象的一個屬性:

  if (!this.hasOwnProperty('myObj')) {
    this.myObj = { };
  }

感謝各位的閱讀!關于“javascript如何判斷對象是不是存在”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女