if
JavaScriptでインラインステートメントを使用するにはどうすればよいですか?インラインelse
ステートメントもありますか?
このようなもの:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
if
JavaScriptでインラインステートメントを使用するにはどうすればよいですか?インラインelse
ステートメントもありますか?
このようなもの:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
jQuery は必ずしも必要ではありません。JavaScript だけでこれを行います。
var a = 2;
var b = 3;
var c = ((a < b) ? 'minor' : 'major');
c
変数はminor
、値が の場合true
、および値major
が の場合ですfalse
。
これは、条件 (三項) 演算子として知られています。
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator
次のような三項演算子があります。
var c = (a < b) ? "a is less than b" : "a is not less than b";
ステートメントをインラインで記述if
する場合、その中のコードは 1 つのステートメントのみにする必要があります。
if ( a < b ) // code to be executed without curly braces;
論理演算子のみを使用して if/else を概算することもできます。
(a && b) || c
上記は、次のように言っているのとほぼ同じです。
a ? b : c
そしてもちろん、おおよそ次と同じです:
if ( a ) { b } else { c }
大まかに言うと、このアプローチには 1 つの違いがあります。つまり、 の値がb
true と評価されることを知っておく必要があります。それ以外の場合は、常に が得られc
ます。基本的に、表示さif () { here }
れる部分は、配置する条件の一部であることに注意する必要がありますif ( here ) { }
。
上記は、演算子のタイプに応じて、論理式を形成した元の値の 1 つを渡す / 返すという JavaScript の動作により可能になります。PHP のような他の特定の言語は、操作の実際の結果、つまり true または false を保持します。つまり、結果は常に true または false です。例えば:
14 && 0 /// results as 0, not false
14 || 0 /// results as 14, not true
1 && 2 && 3 && 4 /// results as 4, not true
true && '' /// results as ''
{} || '0' /// results as {}
通常の if ステートメントと比較した主な利点の 1 つは、最初の 2 つのメソッドが引数の右側で、つまり代入の一部として動作できることです。
d = (a && b) || c;
d = a ? b : c;
if `a == true` then `d = b` else `d = c`
標準の if ステートメントでこれを実現する唯一の方法は、代入を複製することです。
if ( a ) { d = b } else { d = c }
三項演算子の代わりに論理演算子だけを使用する理由を尋ねるかもしれません。単純なケースでは、両方が真であることを確認したい場合を除き、おそらく使用しないでしょう。ネストされた三項演算を使用すると非常に面倒になる可能性がある論理演算子を使用して、より合理化された複雑な条件を実現することもできます...コードを読みやすくしたい場合は、どちらもそれほど直感的ではありません。a
b
平易な英語で、構文は次のように説明されています。
if(condition){
do_something_if_condition_is_met;
}
else{
do_something_else_if_condition_is_not_met;
}
次のように記述できます。
condition ? do_something_if_condition_is_met : do_something_else_if_condition_is_not_met;
インライン IF (ELSE なし) のみが必要な場合は、論理 AND 演算子を使用できます。
(a < b) && /*your code*/;
ELSEも必要な場合は、他の人が提案した三項演算を使用してください。
JavaScript では次のようにできます。
a < b ? passed() : failed();
<div id="ABLAHALAHOO">8008</div>
<div id="WABOOLAWADO">1110</div>
parseInt( $( '#ABLAHALAHOO' ).text()) > parseInt( $( '#WABOOLAWADO ).text()) ? alert( 'Eat potato' ) : alert( 'You starve' );
参考までに、条件演算子を作成できます
var a = (truthy) ? 1 : (falsy) ? 2 : 3;
ロジックが十分に複雑な場合は、IIFEの使用を検討してください。
var a = (function () {
if (truthy) return 1;
else if (falsy) return 2;
return 3;
})();
もちろん、このロジックを複数回使用する予定がある場合は、それを関数にカプセル化して、うまく DRY に保つ必要があります。
これに追加するには、&& と || を使用してインライン if 条件を使用することもできます。オペレーター。このような
var a = 2;
var b = 0;
var c = (a > b || b == 0)? "do something" : "do something else";
質問は本質的ではありません: 次のように書くことができますか?
if (foo)
console.log(bar)
else
console.log(foo + bar)
答えは、はい、上記は翻訳されます。
ただし、次のことは慎重に行ってください
if (foo)
if (bar)
console.log(foo)
else
console.log(bar)
else
console.log(foobar)
上記は例外をスローするため、あいまいなコードは中かっこで囲むようにしてください (同様の順列は望ましくない動作を引き起こします)。
単純な if、else に相当する三項演算子を使用できます。
両方の結果に対して関数を呼び出す三項演算:
(a < b) ? DoSomething() : DoSomethingElse();
結果の 1 つのみに対して関数を呼び出す三項演算:
(a < b) ? DoSomething() : {};