345

ifJavaScriptでインラインステートメントを使用するにはどうすればよいですか?インラインelseステートメントもありますか?

このようなもの:

var a = 2;
var b = 3;

if(a < b) {
    // do something
}
4

17 に答える 17

755

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

于 2012-04-22T17:40:35.797 に答える
52

次のような三項演算子があります。

var c = (a < b) ? "a is less than b"  : "a is not less than b";
于 2012-04-22T17:40:50.290 に答える
50

ステートメントをインラインで記述ifする場合、その中のコードは 1 つのステートメントのみにする必要があります。

if ( a < b ) // code to be executed without curly braces;
于 2012-04-22T17:43:14.027 に答える
43

論理演算子のみを使用して if/else を概算することもできます。

(a && b) || c

上記は、次のように言っているのとほぼ同じです。

a ? b : c

そしてもちろん、おおよそ次と同じです:

if ( a ) { b } else { c }

大まかに言うと、このアプローチには 1 つの違いがあります。つまり、 の値がbtrue と評価されることを知っておく必要があります。それ以外の場合は、常に が得られ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 }

三項演算子の代わりに論理演算子だけを使用する理由を尋ねるかもしれません。単純なケースでは、両方が真であることを確認したい場合を除き、おそらく使用しないでしょう。ネストされた三項演算を使用すると非常に面倒になる可能性がある論理演算子を使用して、より合理化された複雑な条件を実現することもできます...コードを読みやすくしたい場合は、どちらもそれほど直感的ではありません。ab

于 2013-11-04T10:02:41.147 に答える
35

平易な英語で、構文は次のように説明されています。

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;
于 2013-05-10T08:24:01.577 に答える
26

インライン IF (ELSE なし) のみが必要な場合は、論理 AND 演算子を使用できます。

(a < b) && /*your code*/;

ELSEも必要な場合は、他の人が提案した三項演算を使用してください。

于 2015-07-14T03:51:17.050 に答える
21

JavaScript では次のようにできます。

a < b ? passed() : failed();
于 2012-04-22T17:40:29.227 に答える
21
<div id="ABLAHALAHOO">8008</div>
<div id="WABOOLAWADO">1110</div>

parseInt( $( '#ABLAHALAHOO' ).text()) > parseInt( $( '#WABOOLAWADO ).text()) ? alert( 'Eat potato' ) : alert( 'You starve' );
于 2012-04-22T17:44:18.303 に答える
8

参考までに、条件演算子を作成できます

var a = (truthy) ? 1 : (falsy) ? 2 : 3;

ロジックが十分に複雑な場合は、IIFEの使用を検討してください。

var a = (function () {
  if (truthy) return 1;
  else if (falsy) return 2;
  return 3;
})();

もちろん、このロジックを複数回使用する予定がある場合は、それを関数にカプセル化して、うまく DRY に保つ必要があります。

于 2016-08-01T20:58:51.957 に答える
3

これに追加するには、&& と || を使用してインライン if 条件を使用することもできます。オペレーター。このような

var a = 2;
var b = 0;

var c = (a > b || b == 0)? "do something" : "do something else";
于 2013-10-10T06:37:51.597 に答える
0

質問は本質的ではありません: 次のように書くことができますか?

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)

上記は例外をスローするため、あいまいなコードは中かっこで囲むようにしてください (同様の順列は望ましくない動作を引き起こします)。

于 2015-07-16T14:42:17.677 に答える
0

単純な if、else に相当する三項演算子を使用できます。

両方の結果に対して関数を呼び出す三項演算:

(a < b) ? DoSomething() : DoSomethingElse();

結果の 1 つのみに対して関数を呼び出す三項演算:

(a < b) ? DoSomething() : {};
于 2022-03-04T11:54:24.123 に答える