[英]Best practice of checking if variable is undefined
關於未定義變量,我在條件方面遇到了一些問題。 總結一下,檢查變量是否未定義的最佳方法是什么?
我主要是在苦苦掙扎
x === undefined
和
typeof x === 'undefined'
您可以使用這兩種方法來檢查值是否undefined
。 但是,您需要注意的細微差別。
第一種方法使用嚴格比較===
運算符來比較undefined
類型 :
var x;
// ...
x === undefined; // true
只有在聲明了變量但undefined
變量時,這將按預期工作,即具有undefined
值,這意味着您在代碼中的某處具有var x
,但從未為其分配過值。 所以它的undefined
是undefined
的。
但是如果變量沒有用var
關鍵字聲明上面的代碼會拋出引用錯誤:
x === undefined // ReferenceError: x is not defined
在類似這些情況, typeof
比較更可靠:
typeof x == 'undefined' // true
在兩種情況下都可以正常工作:如果變量從未被賦值,並且其值實際上是undefined
。
x === undefined
如果未聲明變量,則不起作用。 僅當聲明了變量但未定義變量時,才返回true
。
更好用
typeof x === 'undefined'
我想兩者都取決於你測試的是什么? 如果它是一個屬性,我總是使用x === undefined
,因為它更清晰(而且看起來更快)。
正如其他人所說,如果沒有聲明x, x === undefined
將不起作用。 就個人而言,我發現使用它的更好的理由,因為通常我不應該檢查變量是否被聲明 - 它通常是編碼錯誤的標志。
我已經看到很多其他版本用於測試參數 - f = function(x) {if (typeof x == 'undefined') …}
- 如果我是代碼審查這樣的代碼我會告訴他們更改。 事實上我們知道這個變量已被宣布,並養成以這種方式編寫變量的習慣,這增加了你浪費時間追逐拼寫錯誤的機會。
主要的例外是當您嘗試檢查組件或庫是否已正確加載或初始化時。 if (typeof jQuery == 'undefined') …
有道理。 但從中期來看,所有這些都應該成為模塊,在這種情況下,我認為測試類型應該被淘汰為有害的。
(另外,就我個人而言,我更喜歡if (window.jQuery === undefined)
。但是,對於同構代碼,它不可移植。)
你可以使用它們中的任何一個。 如果您想檢查變量是否未定義或為null,您可以使用:
x == null
如果x未定義或為null,則結果為true。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.