在JavaScript中你可以聲明一個變量,如果它是undefined
,你可以檢查variable == undefined
;我知道這一點,但是如何比較一個你不知道的值呢?如何將變量與未定義的比較,如果我不知道它們是否存在?
例如,我有一個當用戶點擊一個按鈕時創建的類。在此之前,班級是未定義的 - 它不存在任何地方;我怎麼能比較它?
有沒有辦法不用try
- catch
?
在JavaScript中你可以聲明一個變量,如果它是undefined
,你可以檢查variable == undefined
;我知道這一點,但是如何比較一個你不知道的值呢?如何將變量與未定義的比較,如果我不知道它們是否存在?
例如,我有一個當用戶點擊一個按鈕時創建的類。在此之前,班級是未定義的 - 它不存在任何地方;我怎麼能比較它?
有沒有辦法不用try
- catch
?
最好的方法是檢查型號,因爲JS中10/null
/false
是一件棘手的事情。 所以:
if(typeof obj !== "undefined") {
// obj is a valid variable, do something here.
}
注意typeof
總是返回一個字符串,如果變量完全不存在不產生錯誤。
if (document.getElementById('theElement')) // do whatever after this
對於拋出錯誤,測試父對象,而不是僅僅是變量名的屬性名未定義的東西 - 所以不是:
if (blah) ...
做:
if (window.blah) ...
!undefined
是在JavaScript真實的,所以如果你想知道你的變量或對象是否是不確定的,要採取行動,你可以做這樣的事情:
if(<object or variable>) {
//take actions if object is not undefined
} else {
//take actions if object is undefined
}
if (obj === undefined)
{
// Create obj
}
如果你正在做的廣泛的JavaScript編程,你應該習慣使用===和!==當你想做一個類型特定的檢查。
另外,如果你打算做相當數量的javascript,我建議通過JSLint運行代碼http://www.jslint.com它看起來可能有點惡作劇,但JSLint警告你的大部分事情最終會回來咬你。
使得'if(typeof obj!==「undefined」){}'它是完美的(注意第二個等號) – raveren 2012-06-11 14:33:33
什麼是詭計?爲什麼不只是像Timmys的回答一樣直接比較? – Alex 2016-02-09 13:43:12
你現在可以使用'obj!== undefined'。 'undefined'曾經是可變的,就像'undefined = 1234'什麼會導致有趣的結果。但是在Ecmascript 5之後,它不再可寫,所以我們可以使用更簡單的版本。 http://www.codereadability.com/how-to-check-for-undefined-in-javascript/ – 2016-03-15 20:50:06