Ternärer ? Operator in JavaScript

Vor einiger Zeit habe ich durch Zufall entdeckt, dass der ternäre ? Operator in JavaScript mehr kann, als ich bis jetzt dachte. Als Entwickler kennt man diesen ja bereits aus anderen Programmiersprachen als Abkürzung für einfach if-then-else Ausdrücke. In JavaScript kann man damit aber noch ein wenig mehr ausdrücken.

Der Klassiker ist die bedingte Zuweisung:

var CUSTOMER_TYPE = ‘C’;
var loginPath = (type === CUSTOMER_TYPE) ?
‘/customer.html’ : ‘/prospective.html’;

Dann kann man natürlich auch bedingt Code ausführen, ohne eine Zuweisung durchzuführen:

var CUSTOMER_TYPE = ‘C’;
(type === CUSTOMER_TYPE) ?
validate(customerId) : validate(prospectiveId);

Und, das war neu für mich, man kann auch mehr als eine Anweisung je Pfad ausführen:

var CUSTOMER_TYPE = ‘C’;
(type === CUSTOMER_TYPE) ?
(validate(customerId), showResult()) :
(validate(prospectiveId), showError());

Diese müssen in Klammern gepackt mit Komma voneinander getrennt werden.

Und dann war da noch: Bei der Verwendung in einer Zuweisung wird immer der letzte Wert in einem Pfad zugewiesen:

var CUSTOMER_TYPE = ‘C’;
var loginPath = (type === CUSTOMER_TYPE) ?
(validate(customerId), ‘/customer.html’) :
(validate(prospectiveId), ‘/prospective.html’);

Also an dieser Stelle entweder ‘/customer.html’ bzw. ‘/prospective.html’.

Mehr dazu unter MDN.

Developer since the 80'th, working at Forschungszentrum Jülich (http://www.fz-juelich.de) …

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store