2016-12-01 55 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 
} 

我一般采取这种方法时,它的东西只有我会工作在调试时,在条件内分配可能会使某些人感到困惑。

相关问题