回覆列表
  • 1 # Affgcff

    1、直接判斷物件不為null Javascript語言是"先解析,後執行",解析時就已經完成了變數宣告2、使用window物件判斷某物件是否存在 在某些執行環境中(比如V8、Rhino),window未必是頂層物件。所以,考慮改成this進行判斷,在全域性變數的層面中,this關鍵字總是指向頂層變數,所以就可以獨立於不同的執行環境。4、方法三這樣寫可讀性較差,而且this的指向是可變的,容易出錯,所以進一步改寫:5、可以使用typeof運算子,判斷myObj是否有定義。這是目前使用最廣泛的判斷javascript物件是否存在的方法。6、由於在已定義、但未賦值的情況下,myObj的值直接等於undefined,所以上面的寫法可以簡化:有兩個地方需要注意,首先第二行的var關鍵字不能少,否則會出現ReferenceError錯誤,其次undefined不能加單引號或雙引號,因為比較的是undefined這種資料型別,而不是"undefined"這個字串。7、用精確比較===判斷物件是否存在8、根據javascript的語言設計,undefined == null,所以比較myObj是否等於null,也能得到正確結果不過,雖然執行結果正確,但是從語義上看,這種判斷方法是錯的,應該避免。因為null指的是已經賦值為null的空物件,即這個物件實際上是有值的,而undefined指的是不存在或沒有賦值的物件。因此,這裡只能使用"比較運算子"(==),如果這裡使用"精確比較運算子"(===),就會出錯9、還可以使用in運算子,判斷myObj是否為頂層物件的一個屬性10、使用hasOwnProperty方法,判斷myObj是否為頂層物件的一個屬性總結:1、如果只判斷物件是否存在,推薦使用第五種寫法。2、如果除了物件是否存在,還要判斷物件是否有null值,推薦使用第一種寫法。3、除非特殊情況,所有變數都應該使用var命令宣告。4、為了跨平臺,建議避免使用window表示頂層物件。5、在Javascript語言中,null和undefined容易產生混淆。在可能同時涉及兩者的情況下,建議使用"精確比較"運算子(===)。

  • 中秋節和大豐收的關聯?
  • 怎樣泡茶才是正確的?