什麼是更好的解決方案?真的檢查是否未定義typeof
if(typeof bla === "undefined" || bla === null)...
或者
if(bla)...
如果我做第二個方案,我真的需要檢查其是否不確定?
謝謝。
什麼是更好的解決方案?真的檢查是否未定義typeof
if(typeof bla === "undefined" || bla === null)...
或者
if(bla)...
如果我做第二個方案,我真的需要檢查其是否不確定?
謝謝。
我真的需要檢查它的undefined嗎?
不,undefined和null都解析爲false。第二種選擇肯定更好。
要「檢查未定義」,最好的解決方案通常是第三個:
function isDef(obj) {
var undefined;
return obj === undefined;
}
這用來檢查對象是未定義的,而不會丟失時間與typeof
和這個測試沒有按如同您的第二次測試那樣,驗證爲""
,null
,NaN
或0
爲真。
唯一的缺陷是有人可以覆蓋全局的undefined
對象。在ES5嚴格模式下不可能,但是你的代碼應該避免這種情況。 Shadowing undefined
與當地的var undefined;
定義爲你做。
另外,通過使用isDef
函數,您可以實現更好的便攜式縮小和更簡單的邏輯。
if (isDef(x)) {
// do something
} else {
// do something else
};
行'var undefined;'add是什麼? – smerny
@smerny在我看來,這條線是無用的保護。由於undefined不能在全局範圍內重新定義,因此只需檢查obj === undefined就可以更簡單,更智能。 –
答案是「這取決於你正在嘗試做什麼」。 – karim79
「真的檢查是否未定義」......你的意思是說,還是你的意思是「未定義或空值」,因爲你在這些例子中也檢查null。 –
一個屬性,當它沒有定義時,是未定義的。換句話說,這很明顯。 null是一個對象。它的類型爲null。未定義不是一個對象,它的類型是未定義的。這部分不太明顯。 http://stackoverflow.com/questions/6429225/javascript-null-or-undefined –