Mit dem ternären Operator können zwei Ausdrücke bedingt ausgewertet werden (der erste im Falle der Bedingung ist wahr, der zweite im anderen Fall).
module.exports = global.document ?
factory(global, true) :
function(w) {
if (!w.document) {
throw new Error("jQuery requires a window with a document");
}
return factory(w);
};
Die Zuordnung bedeutet, dass das Ergebnis der Bedingungsauswertung module.export
zugeordnet ist.
Der ternäre Operator ist ein syntaktischer Zucker und funktioniert wie folgt:
function ternary_operator(condition, expression1, expression2) {
if (condition) {
return expression1;
} else {
return expression2;
}
}
so können Sie den Code übersetzen:
module.exports = ternary_operator(global.document,
factory(global, true),
function(w) {
if (!w.document) {
throw new Error("jQuery requires a window with a document");
}
return factory(w);
});
Bitte beachten Sie:
factory(global, true)
und
function(w) {
if (!w.document) {
throw new Error("jQuery requires a window with a document");
}
return factory(w);
};
Sie sind beide Ausdrücke: das Ergebnis der Aktivierung der factory
-Funktion ist ein Ausdruck; Die Definition eines Funktionswerts ist ebenfalls ein Ausdruck.
Verzögerte Auswertung
Die Funktion ternary_operator
einen eifrig ternären Operator zur Verfügung stellt. Die Ausdrücke werden innerhalb der Bedingung ausgewertet, und dann wird einer von ihnen zurückgegeben. Zum Beispiel:
var l = ternary_operator(C, A, B);
1. evaluate C
2. evaluate A
3. evaluate B
4. activate function ternary_operator
5. assign to l the result of the function
Javascript ternärer Operator ist faul: das bedeutet, dass die Bedingung zuerst ausgewertet wird, dann eine gerade von dem anderen Ausdruck evaluatued ist, in Bezug auf Leistung zu gewinnen.
var l = C ? A : B;
1. evaluate C
2.1 if C is true evaluate A
2.2 if C is false evalutate B
3. assign to l the expression evaluated
Ternärer Operator geht nach allem wirklich. Wenn es kein Boolescher Wert ist, wird es als solcher konvertiert. Wenn also global.document null oder undefined oder "" oder ein anderer falscher Wert ist, wird es als false betrachtet und wenn nicht, true – juvian
Das heißt, wenn global.document true ist, dann wird module.exports global.document zugewiesen. Wenn global.document falsy ist, wird die Funktion (w) dem Modul zugewiesen.Exporte, die exportiert werden – Chris
Mögliche Duplikate von [Wie verwenden Sie die? : (Bedingter) Operator in JavaScript?] (https://stackoverflow.com/questions/6259982/how-do-you-use-the-conditional-operator-in-javascript) – juvian