Frage

    

Diese Frage bereits eine Antwort hier:

    
            
  •              Fragezeichen und Doppelpunkt in JavaScript                                      7 Antworten                          
  •     
    

Was bedeutet das Stück Code darstellen? Ich weiß, es ist eine Art von if alternativer Syntax ...

pattern.Gotoccurance.score != null ? pattern.Gotoccurance.score : '0'

Update:

Was ist die Notwendigkeit für diese Art der Codierung? Ist dies effiziente oder nur eine verkürzte Version mit der gleichen Effizienz?

War es hilfreich?

Lösung

Es ist der bedingten Betreiber, ist es gleichbedeutend mit etwas wie folgt aus:

if (pattern.Gotoccurance.score != null) {
  pattern.Gotoccurance.score;
} else {
  '0';
}

Aber ich denke, dass eine Zuweisungsanweisung in dem Code fehlt Sie auf dem Laufenden, wie folgt aus:

var score = pattern.Gotoccurance.score !=null ? pattern.Gotoccurance.score : '0';

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

var score;
if (pattern.Gotoccurance.score != null) {
  score = pattern.Gotoccurance.score;
} else {
  score = '0';
}

Ein gemeinsames Muster diese Art von ‚Standardwert‘ Zuordnungen zu tun in JavaScript, um den logischen OR-Operator (||) zu verwenden ist:

var score = pattern.Gotoccurance.score ||  '0';

Der Wert von pattern.Gotoccurance.score wird nur auf die score Variablen zugewiesen werden, wenn dieser Wert nicht falsy (falsy Werte sind false, null, undefined, 0, leere Zeichenfolge oder NaN).

Ansonsten, wenn es falsy '0' ist zugewiesen wird.

Update: wird die Leistung gleichwertig sein, sollten Sie auf die Lesbarkeit konzentrieren, ich versuche, den ternären Operator auf Ausdrücke zu verwenden, die sehr einfach sind, und Sie können auch die Formatierung verbessern, es Aufspaltung in zwei Linien es besser lesbar zu machen:

var status = (age >= 18) ? "adult"
                         : "minor";

Verwandte Frage:

Andere Tipps

Dies ist ein ternärer Operator , eine shorthanded Art und Weise, wenn Aussagen zu tun.

Wenn neu geschrieben, es würde wie folgt aussehen:

if (pattern.Gotoccurance.score != null) {
   return pattern.Gotoccurance.score;
} else {
   return '0';
}

Es ist der ternäre Operator genannt.

auf die Frage Update Reagieren „Warum für diese Art benötigen Kodierung?“

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

Zum Beispiel habe ich eine Web-Seite, die das zu überprüfen, benötigt mindestens zwei von drei bestimmten Textfelder hatten Werte eingegeben. Die if / else-Logik sah ziemlich hässlich, aber der ternäre Operator machte es einen Einzeiler, um zu bestimmen, wie viele Felder ausgefüllt wurden:

var numberFilledInFields = ( (firstName.length > 0 ? 1 : 0) +
                     (lastName.length > 0 ? 1 : 0) +
                     (zipCode.length > 0 ? 1 : 0) );

if (numberFilledInFields < 2)
{
    validation = false;
    return;
}

Diese Lösung erscheint sehr elegant und einfach als einige Alternativen zu lesen.

Es ist ternärer Operator / Konditionaloperator.

In der Mathematik a ternärer Betrieb ein n-ary Betrieb mit n = 3. eine ternären Operation auf einem Satz A alle gegebenen drei Elemente von A nimmt und kombiniert sie ein einziges Element von A zu bilden.

es ist eine kurze Hand Form if..else

z. will, um herauszufinden, ob eine Zahl gerade oder nicht

ist

// if..else Ansatz mit

function CheckEvenOdd()
{
    var number = 2;
    if(number %2 == 0) alert("even");else alert("odd");
}

// mit ternärer

function CheckEvenOdd()
{
    var number = 2;
    alert((number %2 == 0)?"even":"odd");
}

Eine weitere Variante ist Schalter

// mit dem Schalter

function CheckEvenOdd()
{
    var number = 2;
    switch(number %2)
    {
        case 0:alert("even");break;
        default:alert("odd");break;
    }
}

Nun, wenn Sie einen einfachen if..else Zustand haben wie die, die zur Durchführung beschrieben, können Sie mit ternären vorangehen.

Aber wenn die bedingte Prüfung komplexer wird, gehen entweder mit if..else oder Schalter als Lesbarkeit in dreiteiligem verloren gehen

z. es ist leicht, Minimum oder Maximum von zwei Zahlen, sondern wird mit einem ternären Operator auszuführen plump die größte und zweitgrößte unter den drei oder mehr Zahlen zu finden und nicht einmal recommmended ist. Es ist besser, if..else stattdessen zu verwenden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top