if else
なしで速記を書くことはできますelse
か?
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
私はnull
他の作品を置くことに気づきました(しかし、それがなぜか、それが良い考えかどうかはわかりません)。
編集:あなたの何人かは、なぜ私がこれを試してみるのか困惑しているようです。純粋に好奇心からですのでご安心ください。JavaScriptをいじるのが好きです。
if else
なしで速記を書くことはできますelse
か?
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
私はnull
他の作品を置くことに気づきました(しかし、それがなぜか、それが良い考えかどうかはわかりません)。
編集:あなたの何人かは、なぜ私がこれを試してみるのか困惑しているようです。純粋に好奇心からですのでご安心ください。JavaScriptをいじるのが好きです。
あなたが持っているのは、三項演算子のかなり珍しい使用法です。通常、他の操作の中で、ステートメントではなく式として使用されます。例:
var y = (x == 2 ? "yes" : "no");
だから、読みやすさのために(あなたがしていることは珍しいので)、そしてそれはあなたが望まない「他の」ことを避けるので、私は提案するでしょう:
if (x==2) doSomething();
これもオプションです。
x==2 && dosomething();
dosomething()
x==2
がtrueと評価された場合にのみ呼び出されます。これは短絡と呼ばれます。
このような場合には一般的に使用されないため、このようなコードを作成するべきではありません。この単純なアプローチをお勧めします。
if(x==2) dosomething();
常に読み取り可能なコードを書く必要があります。ファイルサイズが気になる場合は、多くのJSコンプレッサーの1つを使用して、ファイルサイズの縮小バージョンを作成してください。(例:GoogleのClosureCompiler)
あなたが他のことをしていないのなら、なぜそうしないのですか?
if (x==2) doSomething();
null
三項式の分岐の1つに使用することは問題ありません。そして、三項式はJavascriptのステートメントとしては問題ありません。
ただし、スタイルの問題として、プロシージャを呼び出すことを念頭に置いている場合は、if..elseを使用してこれを記述する方が明確です。
if (x==2) doSomething;
else doSomethingElse
または、あなたの場合、
if (x==2) doSomething;
この古いスレッドへの小さな追加..
for
/ループ内で三項演算子を使用して式を評価していて、その結果としてorを使用while
したい場合、 &は両方とも式ではないため、問題が発生します。それらは価値のないステートメントです。continue
break
continue
break
これにより、Uncaught SyntaxError: Unexpected token continue
for (const item of myArray) {
item.value ? break : continue;
}
ステートメントを返すワンライナーが本当に必要な場合は、代わりにこれを使用できます。
for (const item of myArray) {
if (item.value) break; else continue;
}
技術的には、nullまたは0、あるいはランダムな値をそこに置くことは機能します(戻り値を使用していないため)。しかし、なぜコンストラクトの代わりにこのコンストラクトを使用しているのif
ですか?この方法でコードを記述したときに何をしようとしているのかがわかりにくくなります。これは、人々を操作なし(この場合はnull)と混同する可能性があるためです。
おそらく最短 ( OR 演算子とその優先順位に基づく)
x-2||dosomething()
let x=1, y=2;
let dosomething = s=>console.log(s);
x-2||dosomething('x do something');
y-2||dosomething('y do something');