Wie kann ich eine Inline- if
Anweisung in JavaScript verwenden? Gibt es auch eine Inline- else
Anweisung?
Etwas wie das:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
Wie kann ich eine Inline- if
Anweisung in JavaScript verwenden? Gibt es auch eine Inline- else
Anweisung?
Etwas wie das:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
Antworten:
Sie benötigen nicht unbedingt jQuery. JavaScript allein wird dies tun.
var a = 2;
var b = 3;
var c = ((a < b) ? 'minor' : 'major');
Die c
Variable ist, minor
wenn der Wert ist true
und major
wenn der Wert ist false
.
Dies wird als bedingter (ternärer) Operator bezeichnet.
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator
if (a < b) c = 'major';
Zum if
Inline- Schreiben einer Anweisung sollte der darin enthaltene Code nur eine Anweisung sein:
if ( a < b ) // code to be executed without curly braces;
Es gibt einen ternären Operator wie diesen:
var c = (a < b) ? "a is less than b" : "a is not less than b";
0 < 1 : 5 : 120;
ist eine absolut gültige Aussage. Ein wenig nutzlos, es sei denn, Sie werden pro Zeile bezahlt.
if
in einem solchen Fall die einfache alte langweilige Anweisung verwenden, wird Ihr Code wahrscheinlich viel einfacher zu lesen und zu verstehen sein und es ist weniger wahrscheinlich, dass er mit späteren Änderungen bricht.
Sie können ein if / else auch nur mit logischen Operatoren approximieren.
(a && b) || c
Das Obige ist ungefähr dasselbe wie zu sagen:
a ? b : c
Und natürlich ungefähr das Gleiche wie:
if ( a ) { b } else { c }
Ich sage grob, weil es bei diesem Ansatz einen Unterschied gibt, dass Sie wissen müssen, dass der Wert von b
als wahr bewertet wird, sonst erhalten Sie immer c
. Grundsätzlich müssen Sie erkennen, dass der Teil, der erscheinen würde, if () { here }
jetzt Teil der Bedingung ist, die Sie platzieren if ( here ) { }
.
Dies ist aufgrund des JavaScripts-Verhaltens möglich, bei dem einer der ursprünglichen Werte, die den logischen Ausdruck gebildet haben, übergeben / zurückgegeben wird, was vom Typ des Operators abhängt. Bestimmte andere Sprachen wie PHP führen das tatsächliche Ergebnis der Operation fort, dh 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 Hauptvorteil im Vergleich zu einer normalen if-Anweisung besteht darin, dass die ersten beiden Methoden auf der rechten Seite eines Arguments ausgeführt werden können, dh 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, besteht darin, die Zuordnung zu duplizieren:
if ( a ) { d = b } else { d = c }
Sie fragen sich vielleicht , warum die Verwendung nur logische Operatoren anstelle der Ternary Operator , für einfache Fälle wahrscheinlich würden Sie nicht, es sei denn , Sie wollten sicherstellen, a
und b
waren beide wahr. Mit den logischen Operatoren können Sie auch optimierte komplexe Bedingungen erreichen, die mit verschachtelten ternären Operationen ziemlich chaotisch werden können. Wenn Sie jedoch möchten, dass Ihr Code leicht lesbar ist, sind beide nicht wirklich so intuitiv.
Im Klartext erklärte die Syntax:
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;
condition ? true
true
false
und ""
sollte alles in Ordnung sein, um den else-Teil zu ignorieren.
2 == 2 ? doSomething()
wäre das das gleiche wie if (2 == 2) doSomething()
?
: false
oder : ""
sollte da sein, da Javascript dies erwartet.
<div id="ABLAHALAHOO">8008</div>
<div id="WABOOLAWADO">1110</div>
parseInt( $( '#ABLAHALAHOO' ).text()) > parseInt( $( '#WABOOLAWADO ).text()) ? alert( 'Eat potato' ) : alert( 'You starve' );
Zu Ihrer Information, Sie können bedingte Operatoren erstellen
var a = (truthy) ? 1 : (falsy) ? 2 : 3;
Wenn Ihre Logik ausreichend komplex ist, können Sie ein IIFE verwenden
var a = (function () {
if (truthy) return 1;
else if (falsy) return 2;
return 3;
})();
Wenn Sie diese Logik mehr als einmal verwenden möchten, müssen Sie sie natürlich in eine Funktion einkapseln, um die Dinge schön und trocken zu halten.
Ist die Frage nicht wesentlich: Kann ich folgendes schreiben?
if (foo)
console.log(bar)
else
console.log(foo + bar)
Die Antwort lautet: Ja, das oben Gesagte wird übersetzt.
Seien Sie jedoch vorsichtig, wenn Sie Folgendes tun
if (foo)
if (bar)
console.log(foo)
else
console.log(bar)
else
console.log(foobar)
Stellen Sie sicher, dass Sie mehrdeutigen Code in geschweifte Klammern setzen, da dies eine Ausnahme auslöst (und ähnliche Permutationen zu unerwünschtem Verhalten führen).
Inline wenn:
(('hypothesis') ? 'truthy conclusion' : 'falsey conclusion')
wahrheitsgemäße Schlussfolgerung: Aussagen, die ausgeführt werden, wenn die Hypothese wahr ist
Falsey Fazit: Aussagen, die ausgeführt werden, wenn die Hypothese falsch ist
Ihr Beispiel:
var c = ((a < b) ? 'a<b statements' : '!(a<b) statements');