2016-12-01 106 views
1

我有以下代碼完美的作品,但我打電話getItem函數兩次,這似乎是不必要的。我怎樣整理它?更清潔的方式來編寫此代碼

if(localStorage.getItem("preferences") == null { 
    //show set preferences page 
} else { 
    var preferences = localStorage.getItem("preferences"); 
    //do stuff 
} 
+0

感謝大家對這些建議。由於它們都非常相似,我會接受TJs的答案,因爲它是最乾淨的,並且對重新排序代碼也有好處。 – Brad

回答

1

只是做了getItem一次:

var preferences = localStorage.getItem("preferences"); 
if (preferences == null) { 
    //show set preferences page 
} else { 
    //do stuff 
} 

,除非它是有效的是preferences可能比null以外的falsy值,我可能會顛倒這些塊:

var preferences = localStorage.getItem("preferences"); 
if (preferences) { 
    //do stuff 
} else { 
    //show set preferences page 
} 
+0

謝謝TJ的詳細解答 – Brad

0

您不需要閱讀localStorage.getItem兩次。您可以將其讀入一個變量並使用相同的

var preferences = localStorage.getItem("preferences"); 
 
if (preferences == null) { 
 
    //show set preferences page 
 
    } else { 
 
    //you can use this preferences here 
 
    //do stuff 
 
    }

希望它可以幫助

2

希望這有助於

let preferences = localStorage.getItem("preferences"); 

preferences ? do stuff : show set preferences page 
+0

謝謝Ajay,但在這種情況下,'做東西'和'顯示首選項頁面'的代碼塊對於這種符號來說太長了。 – Brad

+0

嘿@Brad,你可以很容易地爲這兩個功能,如'喜好? doStuff():setPreferencesPage()'並相應地寫入。 :) –

1
var preferences = localStorage.getItem("preferences"); 

if(preferences) { 
    //Show preference page 
} else { 
    //Do something 
} 

如果從本地存儲的值是零,你仍然可以把它分配給一個變種,然後檢查它。

此外,您可以簡單地檢查if語句內的var,而不會與null進行比較。 就拿如下:

if(!a) { 
    //Will enter here if a is null, undefined, false, empty string, 0 or NaN 
} 

延伸閱讀:http://james.padolsey.com/javascript/truthy-falsey/

0

調用它一次,它存儲在一個變量。

var preferences = localStorage.getItem("preferences"); 
if(preferences==null){ 
    //.... 
} 
else{ 
    //.... 
} 
0

簡單!

var preferences = localStorage.getItem("preferences"); 

if(preferences == null) { 
    //show set preferences page 
} else { 

    //do stuff with preferences 
} 
1
var preferences = localStorage.getItem("preferences"); 
if(!!preferences){ //check if preferences is undefined or false or null 
    //show set preferences page 
} else { 
    //do stuff 
} 
+0

@RahulDesai如果變量爲null或undefined或false,那麼它會以任何方式返回false,除此之外它還會像parseInt(「a」)一樣處理isNaN情況爲false。更多請參閱http://stackoverflow.com/questions/10467475/double-negation-in-javascript-what-is-the-purpose –

+0

這是一個很好的小竅門! – Brad

+0

'getItem'不會返回'NaN',所以它是多餘的。 –

0

只是作爲一個替代方案,你可以在if語句中指定的偏好本身並執行以下操作:

if ((preferences = localStorage.getItem("preferences"))) { 
    // use preferences here 
} 
else { 
    // set preferences here 
} 

我一般採取這種方法時,它的東西只有我會工作在調試時,在條件內分配可能會使某些人感到困惑。

相關問題