2016-12-01 2 views
1

Ich habe den folgenden Code, der perfekt funktioniert, aber ich rufe die getItem Funktion zweimal, was unnötig scheint. Wie kann ich es aufräumen?Cleaner Weg diesen Code zu schreiben

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

Vielen Dank für diese Vorschläge. Da sie alle ziemlich gleich sind, werde ich TJs Antwort akzeptieren, da sie die sauberste ist und einen guten Punkt über die Neuordnung des Codes macht. – Brad

Antwort

1

Just do die getItem einmal:

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

Und es sei denn, es gültig ist, dass preferences andere ein falsy Wert sein könnte als null, würde ich wahrscheinlich die Blöcke umkehren:

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

Danke TJ für diese detaillierte Antwort – Brad

0

Sie müssen localStorage.getItem nicht zweimal lesen. Sie können es in eine Variable einlesen und dasselbe

verwenden

var preferences = localStorage.getItem("preferences"); 
 
if (preferences == null) { 
 
    //show set preferences page 
 
    } else { 
 
    //you can use this preferences here 
 
    //do stuff 
 
    }

Hoffe, dass es

2

Hoffnung hilft diese

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

preferences ? do stuff : show set preferences page 
+0

Danke Ajay, aber die Codeblöcke 'Do Stuff' und 'Show Preferences Page' sind in dieser Instanz zu lang für diese Notation. – Brad

+0

hey @Brad, können Sie leicht eine Funktion für beide machen, etwas wie: 'Vorlieben? doStuff(): setPreferencesPage() 'und schreibe das entsprechend. :) –

1
var preferences = localStorage.getItem("preferences"); 

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

Wenn der Wert aus dem lokalen Speicher ist null hilft, haben Sie immer es zu einem var zuweisen und dann überprüfe es.

Sie können auch einfach die Variable innerhalb der if-Anweisung überprüfen, ohne mit Null zu vergleichen. Nehmen Sie folgendes zum Beispiel:

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

Weiterführende Literatur: http://james.padolsey.com/javascript/truthy-falsey/

0

es einmal aufrufen und speichern sie in einer Variablen.

var preferences = localStorage.getItem("preferences"); 
if(preferences==null){ 
    //.... 
} 
else{ 
    //.... 
} 
0

Einfach!

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 Wenn Variable ist Null oder undefined oder falsch, dann wird es Sie entweder falsch zurückgeben, abgesehen davon, dass es auch behandelt IsNaN Situation wie ParseInt ("a") zu false. für mehr sehen http://stackoverflow.com/questions/10467475/double-negation-in-javascript-what-is-the-purpose –

+0

Das ist ein netter kleiner Trick! – Brad

+0

'getItem' wird niemals' NaN' zurückgeben, also ist es überflüssig. –

0

nur als Alternative, können Sie Präferenzen innerhalb des if-Anweisung selbst zuweisen und wie folgt vorgehen:

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

Ich nehme im Allgemeinen diesen Ansatz, wenn seine etwas nur werde ich arbeiten werden on kann das Zuweisen innerhalb einer Bedingung einige Leute beim Debuggen verwirren.

Verwandte Themen