2016-12-01 14 views
1

私は完璧に動作する次のコードを持っていますが、私はgetItem関数を2度呼びます。これは不要です。どうすれば整理できますか?このコードを書くクリーナーの方法

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

そして、それはpreferencesnull以外のfalsy値であることができることを、有効でない限り、私はおそらく、それらのブロックを反転したい::

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

これらの提案はありがとうございます。彼らはまったく同じなので、私はTJの答えを受け入れます。それは最もクリーンで、コードの並べ替えについても良い点があります。 – Brad

答えて

1

は一度だけgetItemを行う

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

ありがとうTJ、この詳細な回答は – Brad

0

あなたはlocalStorage.getItemを2回読み込む必要はありません。それを変数に読み込んで同じものを使うことができます。

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

それは、これはローカルストレージからの値がnullの場合、あなたはまだ、その後VARに割り当てることができ

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

preferences ? do stuff : show set preferences page 
2

希望を役に立てば幸いそれに対してチェックする。

また、nullと比較せずにifステートメント内のvarをチェックするだけで済みます。 例えば以下を取る:

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

さらに読書:http://james.padolsey.com/javascript/truthy-falsey/

+0

ありがとうございましたAjayですが、この事例では 'do stuff'と 'show preferences page'コードブロックが長すぎます。 – Brad

+0

ちょっと@ブラッド、あなたは簡単に両方のための機能を作ることができます: '好みですか? doStuff():setPreferencesPage() 'を呼び出してそれに応じて記述します。 :) –

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

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

を助け

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または未定義またはfalseの場合、それは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 
} 

その何かが唯一の私が作業になりますときに私は、一般的に、このアプローチを取りますオンにすると、条件内で割り当てを行うと、デバッグ時に人を混乱させる可能性があります。

関連する問題