我有以下代码完美的作品,但我打电话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