else
なしでif else
速記を書くことができますか?
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
私は他の作品のためにnull
を入れることに気づきました(しかし、なぜかそれが良い考えであるかどうか私にはわかりません)。
編集: 私がこれをやろうとした理由は、あなたの何人かが悩んでいるようです。純粋に好奇心から外れているので安心してください。私はJavaScriptをいじってみるのが好きです。
これもオプションです。
x==2 && dosomething();
dosomething()
は、x==2
がtrueと評価された場合にのみ呼び出されます。これは 短絡 と呼ばれます。
これは、このような場合には一般的には使用されず、このようなコードを書くべきではありません。私はこのより簡単なアプローチをお勧めします。
if(x==2) dosomething();
読みやすいコードを常に書くべきです。ファイルサイズが気になる場合は、多くのJSコンプレッサーのうちの1つを使用して、その縮小バージョンを作成してください。 (例:Googleの Closure Compiler )
あなたが持っているのは 三項演算子 のかなり変わった使い方です。通常、他の操作の中では、式ではなく式として使用されます。
var y = (x == 2 ? "yes" : "no");
それで、読みやすさのために(あなたがしていることは珍しいので)、そしてそれはあなたが望まない「else」を避けているので、私はお勧めします:
if (x==2) doSomething();
別のオプション:
x === 2 ? doSomething() : void 0;
あなたが他のことをしていないのであれば、なぜしないでください:
if (x==2) doSomething();
null
を使用することは三項式の分岐の1つには問題ありません。そして三項式はJavascriptのステートメントとしては問題ありません。
ただし、スタイルの問題として、プロシージャを呼び出すことを念頭に置いている場合は、if..elseを使用してこれを記述する方が明確です
if (x==2) doSomething;
else doSomethingElse
または、あなたの場合は、
if (x==2) doSomething;
この非常に古いスレッドへの小さな追加..
for
ループの中にいて、三項演算子でtruthy/falsy
値の変数を評価する必要があるとしましょう。falsy
continue
にしたい場合 - 式を返さないので問題になるでしょう 、代わりに ステートメント を値なしで返します。
これはUncaught SyntaxError: Unexpected token continue
を生成します
for (var i = 0; i < myArray.length; i++) {
myArray[i].value ? alert('yay') : continue;
}
そのため、ステートメントを返してもコードを1行で表示したい場合は、一見するとちょっと変に見えるかもしれず、厳密な言語使用法に従わないかもしれませんが、代わりにこれを行うことができます。
for (var i = 0; i < myArray.length; i++) {
if (myArray[i].value) alert('yay') ; else continue;
}
技術的には、nullまたは0、あるいは単にランダムな value を置くことでうまくいきます(戻り値を使っていないので)。しかし、なぜあなたはif
構文の代わりにこの構文を使っているのですか?このようにしてコードを書くときに何をしようとしているのかはあまりわかりません。何もしないと混乱する可能性があるためです(あなたの場合はnull)。
おそらく最短
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');