1

次の例を考えてみましょう。

if (cache) {
    x = cache;
} else {
    x = cache = someMethod();
}

とにかくこれをより短くするためにcache ? x = cache : x = cache = someMethod();

編集:

提案されたすべてのソリューションに感謝します。問題のデータはブール値ではなく文字列であることに注意してください。

4

3 に答える 3

7
x = cache || (cache = someMethod());
于 2012-09-01T09:20:45.520 に答える
1

cache以前に宣言および/または割り当てられているかどうかわからない場合、これはMaxArtの回答の修正です(短絡ブール評価コンマ演算子を使用)。

x = (cache = window.cache || someMethod(),cache);
//note: 'window' may be another namespace

厳密モードでも機能しません。その場合、これは次のようになります。

'use strict';
var x = function(w){w.cache = w.cache || someMethod(); return w.cache;}(window);
于 2012-09-01T09:43:55.697 に答える
0

これを行うためのクリーンな方法(boolsでも機能する)は次のようになります。

   if (cache === undefined) { cache = someMethod (); }
   x = cache;
于 2012-09-01T09:24:36.967 に答える