Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 编写此代码的更简洁的方法_Javascript - Fatal编程技术网

Javascript 编写此代码的更简洁的方法

Javascript 编写此代码的更简洁的方法,javascript,Javascript,下面的代码工作得很好,但是我调用了两次getItem函数,这似乎是不必要的。我该怎么收拾呢 if(localStorage.getItem("preferences") == null { //show set preferences page } else { var preferences = localStorage.getItem("preferences"); //do stuff } 只需执行一次getItem: var preferences = loca

下面的代码工作得很好,但是我调用了两次
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
之外的错误值,否则我可能会反转这些块:

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

只需执行一次
getItem

var preferences = localStorage.getItem("preferences");
if (preferences == null) {
    //show set preferences page
} else {
    //do stuff
}
除非
preferences
可以是除
null
之外的错误值,否则我可能会反转这些块:

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

您不需要读取localStorage.getItem两次。您可以将其读入变量并使用相同的值

var preferences=localStorage.getItem(“首选项”);
如果(首选项==null){
//显示设置首选项页面
}否则{
//您可以在此处使用此首选项
//做事

}
无需读取localStorage.getItem两次。您可以将其读入变量并使用相同的值

var preferences=localStorage.getItem(“首选项”);
如果(首选项==null){
//显示设置首选项页面
}否则{
//您可以在此处使用此首选项
//做事
}
希望这有帮助

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

preferences ? do stuff : show set preferences page
希望这有帮助

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

preferences ? do stuff : show set preferences page
如果本地存储的值为null,您仍然可以将其分配给var,然后对照它进行检查

此外,您可以简单地检查if语句中的var,而无需与null进行比较。 以以下为例:

if(!a) {
    //Will enter here if a is null, undefined, false, empty string, 0 or NaN
}
进一步阅读:

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

此外,您可以简单地检查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){
    //....
}
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 == null) {
    //show set preferences page
} else {

    //do stuff with preferences
}

作为替代方案,您可以在if语句本身中分配首选项,并执行以下操作:

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

我通常采用这种方法,因为这是我唯一要处理的事情,在调试时,在条件内赋值可能会让一些人感到困惑。

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

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


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

感谢TJ的详细回答感谢TJ的详细回答谢谢大家的建议。因为它们几乎都是一样的,我会接受TJs的答案,因为它是最干净的,并且对重新排序代码也有很好的看法。谢谢大家的建议。因为它们几乎都是一样的,所以我会接受TJs的答案,因为它是最干净的,并且对重新排序代码也有很好的看法。@RahulDesai如果变量为null、未定义或false,那么它将以任何方式返回false,除此之外,它还将处理isNaN情况,如parseInt(“a”)变为false。有关详细信息,请参见
getItem
将永远不会返回
NaN
,因此它是多余的。@EvanTrimboli如果您有“函数getItem(){return parseInt(“a”)}”呢?它来自
localStorage
:啊,好吧,这在OP中没有提到question@RahulDesai若变量为null、undefined或false,那个么它将以任何方式返回false,除此之外,它还将处理isNaN情况,比如将parseInt(“a”)转换为false。有关详细信息,请参见
getItem
将永远不会返回
NaN
,因此它是多余的。@EvanTrimboli如果您有“函数getItem(){return parseInt(“a”)}”呢?它来自于
localStorage
:啊,好吧,这在操作问题中没有提到,谢谢Ajay,但是在这个例子中,“do stuff”和“show preferences page”代码块对于这个符号来说太长了。嘿@Brad,你可以很容易地为这两个函数创建一个函数,比如:
preferences?doStuff():setPreferencesPage()
并相应地编写它。:)谢谢Ajay,但是在本例中,“do stuff”和“show preferences page”代码块对于这种表示法来说太长了。嘿@Brad,你可以很容易地为这两个代码块创建一个函数,比如:
preferences?doStuff():setPreferencesPage()
并相应地编写它。:)