[英]checking for undefined in javascript— should I use typeof or not?
[英]Checking for Undefined with `typeof ==` and `===`
我會說如果你能控制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.