Hoe schrijf je een inline IF-statement in JavaScript?

Hoe kan ik een inline if-statement in JavaScript gebruiken? Is er ook een inline else-statement?

Zoiets:

var a = 2;
var b = 3;
if(a < b) {
    // do something
}

Antwoord 1, autoriteit 100%

Je hebt niet per se jQuery nodig. Alleen JavaScript zal dit doen.

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

De variabele cis minorals de waarde trueis, en majorals de waarde false.


Dit staat bekend als een voorwaardelijke (ternaire) operator.

https://developer.mozilla.org/en- VS/docs/JavaScript/Referentie/Operators/Conditional_Operator


Antwoord 2, autoriteit 7%

Er is een ternaire operator, zoals deze:

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

Antwoord 3, autoriteit 7%

Voor het inline schrijven van een if-instructie, mag de code erin slechts één instructie zijn:

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

Antwoord 4, autoriteit 6%

Je kunt ook een if/else benaderen met alleen logische operatoren.

(a && b) || c

Het bovenstaande is ongeveer hetzelfde als zeggen:

a ? b : c

En natuurlijk ongeveer hetzelfde als:

if ( a ) { b } else { c }

Ik zeg grofweg omdat er één verschil is met deze benadering, namelijk dat je moet weten dat de waarde van bals waar zal worden geëvalueerd, anders krijg je altijd c. Eigenlijk moet je je realiseren dat het deel dat zou verschijnen if () { here }nu onderdeel is van de voorwaarde die je plaatst if ( here ) { }.

Het bovenstaande is mogelijk vanwege het JavaScript-gedrag van het doorgeven / retourneren van een van de oorspronkelijke waarden die de logische expressie vormden, welke afhankelijk is van het type operator. Bepaalde andere talen, zoals PHP, voeren het werkelijke resultaat van de bewerking uit, d.w.z. waar of onwaar, wat betekent dat het resultaat altijd waar of onwaar is; bijvoorbeeld:

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

Een belangrijk voordeel, vergeleken met een normale if-statement, is dat de eerste twee methoden aan de rechterkant van een argument kunnen werken, d.w.z. als onderdeel van een opdracht.

d = (a && b) || c;
d = a ? b : c;
if `a == true` then `d = b` else `d = c`

De enige manier om dit te bereiken met een standaard if-statement zou zijn om de opdracht te dupliceren:

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

Je kunt je afvragen waarom je alleen Logische operatorsgebruikt in plaats van de Ternaire operator, in eenvoudige gevallen zou u dat waarschijnlijk niet doen, tenzij u wilde zeker weten dat aen bbeide waar waren. Je kunt ook meer gestroomlijnde complexe voorwaarden bereiken met de logische operatoren, die behoorlijk rommelig kunnen worden met geneste ternaire bewerkingen… maar nogmaals, als je wilt dat je code gemakkelijk leesbaar is, zijn geen van beide echt zo intuïtief.


Antwoord 5, autoriteit 5%

In gewoon Engels, de syntaxis uitgelegd:

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

Kan worden geschreven als:

condition ? do_something_if_condition_is_met : do_something_else_if_condition_is_not_met;

Antwoord 6, autoriteit 3%

Als u alleen een inline IF (zonder de ELSE) wilt, kunt u de logische AND-operator gebruiken:

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

Als je ook een ELSE nodig hebt, gebruik dan de ternaire bewerking die de andere mensen hebben voorgesteld.


Antwoord 7, autoriteit 3%

<div id="ABLAHALAHOO">8008</div>
<div id="WABOOLAWADO">1110</div>
parseInt( $( '#ABLAHALAHOO' ).text()) > parseInt( $( '#WABOOLAWADO ).text()) ? alert( 'Eat potato' ) : alert( 'You starve' );

Antwoord 8, autoriteit 3%

Je zou zo kunnen doen in JavaScript:

a < b ? passed() : failed();

Antwoord 9

Ter informatie, u kunt voorwaardelijke operators

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

Als uw logica voldoende complex is, kunt u overwegen een IIFE

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

Natuurlijk, als je van plan bent om deze logica meer dan eens te gebruiken, dan moet je het inkapselen in een functie om het mooi en DROOG te houden.


Antwoord 10

Ik moet vaak meer code per voorwaarde uitvoeren, door gebruik te maken van: ( , , )kunnen meerdere code-elementen worden uitgevoerd:

var a = 2;
var b = 3;
var c = 0;
( a < b ?  ( alert('hi'), a=3, b=2, c=a*b ) : ( alert('by'), a=4, b=10, c=a/b ) );

Antwoord 11

Om hieraan toe te voegen, kunt u ook de inline if-voorwaarde gebruiken met && en || exploitanten.
Vind ik leuk

var a = 2;
var b = 0;
var c = (a > b || b == 0)? "do something" : "do something else";

Antwoord 12

inline als:

(('hypothesis') ? 'truthy conclusion' : 'falsey conclusion')

waarheidsconclusie: uitspraken uitgevoerd wanneer hypothese waar is

valse conclusie: uitspraken uitgevoerd wanneer hypothese niet waar is

uw voorbeeld:

var c = ((a < b) ? 'a<b statements' : '!(a<b) statements');

Antwoord 13

Is de vraag in wezen niet: mag ik het volgende schrijven?

if (foo)
  console.log(bar)
else
  console.log(foo + bar)

het antwoord is, ja, het bovenstaande zal zich vertalen.

Pas echter op voor het volgende

if (foo)
  if (bar)
    console.log(foo)
  else 
    console.log(bar)
else 
  console.log(foobar)

Zorg ervoor dat u dubbelzinnige code tussen accolades plaatst, aangezien het bovenstaande een uitzondering zal veroorzaken (en soortgelijke permutaties zullen ongewenst gedrag veroorzaken.)


Antwoord 14

Vereenvoudig de ternaire operator

var locked = 1;
var canChange = locked != 1 ? true : false;

Als de vergrendeling 1 is, wordt de variabele canChangeingesteld op false, anders wordt deze ingesteld op true.
In dit geval kunt u het als volgt vereenvoudigen door een Booleaanse uitdrukking te gebruiken:

var locked = 1;
var canChange = locked != 1;

Voor meerdere ternaire JavaScript-operators
Het volgende voorbeeld laat zien hoe u twee ternaire operatoren in dezelfde uitdrukking kunt gebruiken:

var speed = 90;
var message = speed >= 120 ? 'Too Fast' : (speed >= 80 ? 'Fast' : 'OK');
console.log(message);

Het is een goede gewoonte om de ternaire operator te gebruiken wanneer dit de code leesbaarder maakt. Als de logica veel if…else-instructies bevat, moet u de ternaire operatoren niet gebruiken.

Other episodes