我想知道這些方法是更好:在javascript中,哪個更好`var Obj = Obj || {}`或`如果(的OBJ === '未定義' || typeof運算的OBJ == '對象'!)`
var Obj = Obj || {};
或
if (Obj === undefined || typeof Obj !== 'object') {
Obj = {};
}
我被告知第二種方法更好,但我不知道爲什麼。請你能向我解釋每個人的優點和缺點。
非常感謝
我想知道這些方法是更好:在javascript中,哪個更好`var Obj = Obj || {}`或`如果(的OBJ === '未定義' || typeof運算的OBJ == '對象'!)`
var Obj = Obj || {};
或
if (Obj === undefined || typeof Obj !== 'object') {
Obj = {};
}
我被告知第二種方法更好,但我不知道爲什麼。請你能向我解釋每個人的優點和缺點。
非常感謝
第二種方法是簡單的更具體,所以用於創建對象的目的(如果它不存在),它是更好的。第一種方法只測試對象是否爲「真」,即如果Obj
是數字5,它仍然會返回原始的Obj
,而在第二種方法中,Obj
必須是的類型爲「對象」被保存。
實際上,沒有太大的區別,因爲你很少遇到像上面這樣的情況;第二種方法只是告訴讀者你想要什麼,更具體地說。我喜歡第一種方法,因爲它更短,但這取決於你想要的具體程度。
我在第一種方法中看到的唯一問題是,如果有人定義了Obj
來引用不是對象的東西,但也不是假的 - 一個非零整數,比如說 - 然後Obj
將會繼續指向那個東西,然後調用Obj
,假定它是一個對象將會失敗。但我仍然更喜歡簡單的第一個版本;我試圖命名空間這樣的對象,沒有人會分配任何不適當的名稱。
那些代碼不會做同樣的事情......另外我不認爲你的意思是寫'Obj ==='undefined'',而是'Obj === undefined'或'typeof Obj ==='undefined''。 –
@AlinPurcaru:即使'Obj === undefined'和'typeof Obj ==='undefined''也沒有意義,因爲第二個條件無論如何都會抓住它。它看起來像第二件事的作者沒有考慮代碼。 – thejh
@thejh:是的,我想到了代碼,這就是爲什麼我要問一個問題。我之前使用了第一種方法,但有人告訴我這是個壞主意......他告訴我要用第二種方法。 – Shaoz