关于javascript:更清洁的方式来编写这段代码

Cleaner way to write this code

我有以下代码可以很好地工作,但是我两次调用getItem函数,这似乎是不必要的。我怎么整理?

1
2
3
4
5
6
if(localStorage.getItem("preferences") == null {
    //show set preferences page
} else {
    var preferences = localStorage.getItem("preferences");
    //do stuff
}


希望这有帮助

1
2
3
let preferences = localStorage.getItem("preferences");

preferences ? do stuff : show set preferences page


1
2
3
4
5
6
var preferences = localStorage.getItem("preferences");
if(!!preferences){ //check if preferences is undefined or false or null
    //show set preferences page
} else {
    //do stuff
}


1
2
3
4
5
6
7
var preferences = localStorage.getItem("preferences");

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

如果本地存储的值为空,您仍然可以将其分配给var,然后对照它进行检查。

此外,您可以简单地检查if语句中的var,而不必与空值进行比较。以下列为例:

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

进一步阅读:http://james.padolsey.com/javascript/truthy-false/


只需执行一次getItem

1
2
3
4
5
6
var preferences = localStorage.getItem("preferences");
if (preferences == null) {
    //show set preferences page
} else {
    //do stuff
}

除非preferences可能是null以外的一个不稳定值,否则我可能会颠倒这些块:

1
2
3
4
5
6
var preferences = localStorage.getItem("preferences");
if (preferences) {
    //do stuff
} else {
    //show set preferences page
}


作为一种替代方法,您可以在if语句本身中指定首选项,并执行以下操作:

1
2
3
4
5
6
if ((preferences = localStorage.getItem("preferences"))) {
    // use preferences here
}
else {
    // set preferences here
}

我通常在只有我将要处理的情况下使用这种方法,在条件内分配可能会在调试时使一些人感到困惑。


简单!

1
2
3
4
5
6
7
8
var preferences = localStorage.getItem("preferences");

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

    //do stuff with preferences
}


调用一次并将其存储在变量中。

1
2
3
4
5
6
7
var preferences = localStorage.getItem("preferences");
if(preferences==null){
    //....
}
else{
    //....
}

不需要两次读取localstorage.getitem。您可以将其读取到变量中并使用相同的值。

1
2
3
4
5
6
7
var preferences = localStorage.getItem("preferences");
if (preferences == null) {
    //show set preferences page
  } else {
    //you can use this preferences here
    //do stuff
  }

希望它有帮助