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
。
これは、条件付き(3項)演算子として知られています。
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator
if (a < b) c = 'major';
次のような三項演算子があります。
var c = (a < b) ? "a is less than b" : "a is not less than b";
0 < 1 : 5 : 120;
完全に有効なステートメントです。ただし、ラインごとに支払われない限り、少し役に立たない。
if
そのような場合に単純な古い退屈なステートメントを使用すると、コードが読みやすくなり、理解しやすくなり、後の変更でコードが壊れる可能性が低くなります。
論理演算子のみを使用して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 }
確認する必要があり、かつ両方が真である場合を除いて、3 項演算子の代わりに論理演算子だけを使用する理由を尋ねるかもしれません。また、論理演算子を使用すると、より合理化された複雑な条件を実現できます。これは、ネストされた3項演算を使用するとかなり面倒になる可能性があります。次に、コードを簡単に読みやすくしたい場合も、どちらもそれほど直感的ではありません。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;
condition ? true
true
false
そして""
、else部分を無視しても問題ありません。
2 == 2 ? doSomething()
同じif (2 == 2) doSomething()
ですか?
: false
または: ""
JavaScriptを有効にしてを期待しているようがあるはずです。