我有以下代碼完美的作品,但我打電話getItem
函數兩次,這似乎是不必要的。我怎樣整理它?更清潔的方式來編寫此代碼
if(localStorage.getItem("preferences") == null {
//show set preferences page
} else {
var preferences = localStorage.getItem("preferences");
//do stuff
}
我有以下代碼完美的作品,但我打電話getItem
函數兩次,這似乎是不必要的。我怎樣整理它?更清潔的方式來編寫此代碼
if(localStorage.getItem("preferences") == null {
//show set preferences page
} else {
var preferences = localStorage.getItem("preferences");
//do stuff
}
只是做了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
}
謝謝TJ的詳細解答 – Brad
您不需要閱讀localStorage.getItem兩次。您可以將其讀入一個變量並使用相同的
var preferences = localStorage.getItem("preferences");
if (preferences == null) {
//show set preferences page
} else {
//you can use this preferences here
//do stuff
}
希望它可以幫助
希望這有助於
let preferences = localStorage.getItem("preferences");
preferences ? do stuff : show set preferences page
謝謝Ajay,但在這種情況下,'做東西'和'顯示首選項頁面'的代碼塊對於這種符號來說太長了。 – Brad
嘿@Brad,你可以很容易地爲這兩個功能,如'喜好? doStuff():setPreferencesPage()'並相應地寫入。 :) –
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
}
調用它一次,它存儲在一個變量。
var preferences = localStorage.getItem("preferences");
if(preferences==null){
//....
}
else{
//....
}
簡單!
var preferences = localStorage.getItem("preferences");
if(preferences == null) {
//show set preferences page
} else {
//do stuff with preferences
}
var preferences = localStorage.getItem("preferences");
if(!!preferences){ //check if preferences is undefined or false or null
//show set preferences page
} else {
//do stuff
}
@RahulDesai如果變量爲null或undefined或false,那麼它會以任何方式返回false,除此之外它還會像parseInt(「a」)一樣處理isNaN情況爲false。更多請參閱http://stackoverflow.com/questions/10467475/double-negation-in-javascript-what-is-the-purpose –
這是一個很好的小竅門! – Brad
'getItem'不會返回'NaN',所以它是多餘的。 –
只是作爲一個替代方案,你可以在if語句中指定的偏好本身並執行以下操作:
if ((preferences = localStorage.getItem("preferences"))) {
// use preferences here
}
else {
// set preferences here
}
我一般採取這種方法時,它的東西只有我會工作在調試時,在條件內分配可能會使某些人感到困惑。
感謝大家對這些建議。由於它們都非常相似,我會接受TJs的答案,因爲它是最乾淨的,並且對重新排序代碼也有好處。 – Brad