JavaScript falls alternativ [duplizieren]

8

Was bedeutet dieses Codebit? Ich weiß, es ist eine Art von if alternative Syntax ...

%Vor%

Aktualisierung:

Was ist das für eine solche Codierung? Ist das effizienter oder nur eine verkürzte Version mit derselben Effizienz?

    
Gandalf StormCrow 06.11.2009, 15:32
quelle

5 Antworten

34

Es ist der bedingte Operator, der etwa so lautet:

> %Vor%

Aber ich denke, dass eine Zuweisungsanweisung in dem von Ihnen geposteten Code fehlt:

%Vor%

Die Variable score wird zugewiesen, wenn pattern.Gotoccurance.score nicht null ist:

%Vor%

Ein gängiges Muster für diese Art von Standardwertzuweisungen in JavaScript ist die Verwendung des logischen OR-Operators ( || ):

%Vor%

Der Wert von pattern.Gotoccurance.score wird nur dann der score -Variable zugewiesen, wenn dieser Wert nicht falsy ist (die Falsy-Werte sind false , null , undefined ,% co_de) %, Zeichenfolge mit der Länge 0 oder 0 ).

Sonst wird, wenn es falsch ist NaN zugewiesen.

Update: Die Leistung ist gleichwertig, Sie sollten sich auf die Lesbarkeit konzentrieren, ich versuche, den ternären Operator für Ausdrücke zu verwenden, die sehr einfach sind, und Sie können auch die Formatierung verbessern, indem Sie sie aufteilen zwei Zeilen, um es lesbarer zu machen:

%Vor%

Verwandte Frage:

CMS 06.11.2009, 15:35
quelle
5

Dies ist ein ternärer Operator , ein einfacher Weg, um Aussagen zu machen.

Wenn es neu geschrieben würde, würde es so aussehen:

%Vor%     
Sean Vieira 06.11.2009 15:36
quelle
2

Es heißt der ternäre Operator.

    
Matthew Wilson 06.11.2009 15:35
quelle
0

Antwort auf das Frageupdate "Warum brauchen Sie diese Art von Codierung?"

Sie können den ternären Operator manchmal verwenden, um die Komplexität zu reduzieren:

Zum Beispiel habe ich eine Webseite, die überprüfen musste, ob mindestens zwei von drei spezifischen Textfeldern Werte eingegeben hatten. Die if / else-Logik sah ziemlich hässlich aus, aber der ternäre Operator machte einen Einzeiler, um zu bestimmen, wie viele Felder ausgefüllt wurden:

%Vor%

Diese Lösung erscheint ziemlich elegant und leicht zu lesen als einige Alternativen.

    
Perry Pederson 06.11.2009 17:48
quelle
0

Es ist ein ternärer Operator / bedingter Operator.

In der Mathematik ist ein ternäre Operation ist eine n-äre Operation mit n = 3. Eine ternäre Operation an einer Menge A nimmt beliebige gegebene drei Elemente von A und kombiniert sie zu a einzelnes Element von A.

Es ist eine kurze Handform von if..else

z.B. möchte herausfinden, ob eine Zahl gerade ist oder nicht

// Verwenden Sie if..else approach

%Vor%

// ternär verwenden

%Vor%

Eine weitere Variante ist switch

// mit dem Schalter

%Vor%

Nun, wenn Sie eine einfache if..else-Bedingung haben, um wie die beschriebene auszuführen, können Sie mit ternary fortfahren.

Wenn die bedingte Überprüfung jedoch komplex wird, gehen Sie entweder mit if..else oder wechseln Sie, da die Lesbarkeit in ternär verloren geht

z.B. Es ist leicht, mit einem ternären Operator zwei oder mehr Zahlen zu machen, aber es wird schwerfällig, den größten & amp; zweitgrößte unter 3 oder mehr Nummern und wird nicht einmal empfohlen. Es ist besser, if..else stattdessen

zu verwenden     
priyanka.sarkar 08.11.2009 06:31
quelle