我似乎對objects
要使用此測試很多的Javascript測試(對象&&對象!==「空」 &&對象!==「未定義」)
if(object && object !== "null" && object !== "undefined"){
doSomething();
}
我回來,從服務呼叫或從閱讀cookies(因爲不同的瀏覽器返回不同的值null
,undefined
,"null"
或"undefined"
)。
有沒有更容易/更有效的方法來做這個檢查?
我似乎對objects
要使用此測試很多的Javascript測試(對象&&對象!==「空」 &&對象!==「未定義」)
if(object && object !== "null" && object !== "undefined"){
doSomething();
}
我回來,從服務呼叫或從閱讀cookies(因爲不同的瀏覽器返回不同的值null
,undefined
,"null"
或"undefined"
)。
有沒有更容易/更有效的方法來做這個檢查?
我不認爲你可以做任何簡單,但你肯定可以重構這個邏輯成一個函數:
function isRealValue(obj)
{
return obj && obj !== 'null' && obj !== 'undefined';
}
然後,至少你的代碼變成:
if (isRealValue(yourObject))
{
doSomething();
}
我喜歡你的答案,因爲它是可重用的,**非常**可讀。但是,我只是發現了一種更有效的方式來進行實際檢查。 –
也許這樣
if (typeof object !== "undefined" || object !== null)
// do something
'object'是[不是保留字](http://es5.github.com/#x7.6.1.1)。 –
@JamesAllardice。你有權利。我刪除了評論 –
這是不是等同於原來的功能呢?他正在專門檢查一個值爲「null」的字符串。請參閱:http://jsfiddle.net/7eYKN/ – aquinas
如果object
是真的,我們已經知道它不是null
或undefined
(假設字符串值是錯誤的)。我假設沒有null
而不是undefined
測試是想要的。
如果是這樣,與null
或undefined
的簡單比較是比較!= null
。
if(object != null){
doSomething();
}
如果object
既不是null
也不undefined
的doSomething
功能纔會運行。
否:「它有時會有字符串」空「或」未定義「。」如果值中有一個REAL字符串,這將不起作用:http://jsfiddle.net/7eYKN/1/ – aquinas
@aquinas:我在該問題下看到該評論,但沒有足夠的代表回覆。那麼問題將是「有時」的含義。我認爲提問者給我們一些印象性的代碼而不是實際的代碼表示。是的,一個人有時可能想要與'「null」字符串進行比較,但這並不常見,但由於typeof foo ===「undefined」,因此更常見到「undefined」字符串。 '。所以我的答案試圖找到通常想要的核心,因爲這個問題似乎並不代表任何常見的現實世界的例子。 – scatter
@aquinas:如果我有更多的代表,我也會評論SnakeEyes代碼總是會給出一個「真實」結果。 – scatter
如果你有jQuery,你可以使用$ .isEmptyObject()。
$.isEmptyObject(null)
$.isEmptyObject(undefined)
var obj = {}
$.isEmptyObject(obj)
所有這些調用都將返回true。希望它有幫助
不要用jQuery來回答JavaScript問題。 jQuery不向後兼容JavaScript,它不斷改變發佈的事情,當你的瀏覽器已經可以處理* real * JavaScript時,你在這裏或者那裏通過在客戶端上轉儲70KB來節省1KB,並且與知道如何編程。 – John
if(!!object){
doSomething();
}
如果它實際上可能有字符串值'「null」'和'「undefined」',那麼你的方法不能更簡單。 –
它確實有字符串「null」或「undefined」。感謝您的確認。 –
您也可以使用'!!'如'if(!! myobj){doSomething();}'來檢查對象。它將對象轉換爲布爾值,然後再次將其反轉。看看[這](http://stackoverflow.com/a/10597474)答案是一個非常好的解釋。 –