384 Stimmen

Wie schreibt man eine Inline-IF-Anweisung in JavaScript?

Wie kann ich eine Inline if Anweisung in JavaScript? Gibt es eine Inline else Aussage auch?

Etwa so:

var a = 2;
var b = 3;

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

841voto

MattW Punkte 12322

Sie brauchen nicht unbedingt jQuery. JavaScript allein wird dies tun.

var a = 2;
var b = 3;    
var c = ((a < b) ? 'minor' : 'major');

Die c wird die Variable minor wenn der Wert true und major wenn der Wert false .


Dies ist ein sogenannter bedingter (ternärer) Operator.

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator

63voto

Mahmoud Gamal Punkte 76107

Es gibt einen ternären Operator, etwa so:

var c = (a < b) ? "a is less than b"  : "a is not less than b";

58voto

Ram Punkte 140353

Zum Schreiben if Anweisung inline, sollte der darin enthaltene Code nur aus einer Anweisung bestehen:

if ( a < b ) // code to be executed without curly braces;

49voto

Pebbl Punkte 32867

Sie können ein if/else auch nur mit logischen Operatoren approximieren.

(a && b) || c

Das ist in etwa das Gleiche, wie zu sagen:

a ? b : c

Und natürlich ungefähr das Gleiche wie:

if ( a ) { b } else { c }

Ich sage "ungefähr", weil es bei diesem Ansatz einen Unterschied gibt, nämlich dass man wissen muss, dass der Wert von b wird als wahr ausgewertet, andernfalls erhalten Sie immer c . Grundsätzlich muss man sich darüber im Klaren sein, dass der Teil, der erscheinen würde if () { here } ist nun Teil der Bedingung, die Sie stellen if ( here ) { } .

Dies ist möglich, weil JavaScripts einen der ursprünglichen Werte, aus denen der logische Ausdruck besteht, übergeben bzw. zurückgeben, wobei der Wert vom Typ des Operators abhängt. Bestimmte andere Sprachen, wie PHP, geben das tatsächliche Ergebnis der Operation weiter, d.h. wahr oder falsch, was bedeutet, dass das Ergebnis immer wahr oder falsch ist; z.B:

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 {}

Ein wesentlicher Vorteil gegenüber einer normalen if-Anweisung ist, dass die ersten beiden Methoden auf der rechten Seite eines Arguments operieren können, d.h. als Teil einer Zuweisung.

d = (a && b) || c;
d = a ? b : c;

if `a == true` then `d = b` else `d = c`

Die einzige Möglichkeit, dies mit einer Standard-if-Anweisung zu erreichen, wäre, die Zuordnung zu duplizieren:

if ( a ) { d = b } else { d = c }

Sie fragen sich vielleicht, warum Sie nur Logische Operatoren anstelle der Ternärer Operator In einfachen Fällen würden Sie das wahrscheinlich nicht tun, es sei denn, Sie wollten sicherstellen, dass ab waren beide wahr. Mit den logischen Operatoren lassen sich auch komplexere Bedingungen erreichen, die mit verschachtelten ternären Operationen ziemlich unübersichtlich werden können... aber wenn man möchte, dass der Code leicht lesbar ist, ist beides nicht wirklich so intuitiv.

37voto

Onimusha Punkte 3279

In einfachem Englisch, die Syntax erklärt:

if(condition){
    do_something_if_condition_is_met;
}
else{
    do_something_else_if_condition_is_not_met;
}

Kann geschrieben werden als:

condition ? do_something_if_condition_is_met : do_something_else_if_condition_is_not_met;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X