簡體   English   中英

使用`typeof ==`和`===`檢查未定義

[英]Checking for Undefined with `typeof ==` and `===`

我剛讀了這個優秀的問題和關於“==與===”的最佳答案

var x = undefined;

當檢查x是否真的等於undefined ,以下兩個都有效。

if(typeof x == "undefined") {
    console.log("typeof x == \"undefined\"");
}

if(x === undefined) {
    console.log("x === undefined");
}

輸出:

typeof x ==“undefined”

x === undefined

是一種比另一種更慣用的方式嗎? 如果是這樣,為什么?

我會說如果你能控制x的可能值范圍,那么檢查x === undefined是最常用的方法。 例如,如果您有一個返回結果的函數,或者如果遇到錯誤則是undefined的。

否則,您應該使用typeof x == 'undefined'

需要注意的是,某些表達式和變量可能undefined因為它們根本沒有定義,而其他表達式和變量則明確定義為undefined

如果您嘗試這樣做:

var x = undefined;
if(typeof x == "undefined") // This works
if(x === undefined) // This works
if(typeof y == "undefined") // This works
if(y === undefined) // This does not work and throws a ReferenceError

因此,基本上,如果您無法控制變量的范圍 ,則使用typeof會更安全,更容易,因為您不必實現異常處理。

上述條件檢查都有效,因此可以互換使用。 但是,既然你已經問到了慣用語 ,我會說條件檢查: typeof x == undefined在閱讀時聽起來更好,並解釋了代碼的真正作用,因此,我的個人投票:)

如果你使用原始的javascript你最好做typeof x == "undefined" ,為什么?

因為undefined是一個全局變量,在某些瀏覽器中它不是只讀的,任何人都可以覆蓋它,例如,在Chrome 14或Firefox 6中你可以這樣做:

window.undefined = "MyUndefined"

這會覆蓋undefined全局變量,當然看起來如此嘲笑甚至擔心這一點,但是當你檢查你的變量未定義時,它會更加安全,如下所示:

typeof x == "undefined"
  • 這是我反對使用undefined屬性的主要原因。

這與使用原始javascript有什么關系:

如果你使用jQuery,jQuery已經用一個真正的undefined值覆蓋了undefined的全局變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM