dedlfix: Frage zu Kurzschreibweise

Beitrag lesen

Tach!

Zur eigentlichen Frage haben die anderen beiden ja schon etwas geschrieben und ich beziehe mich nur auf einen Nebenkriegsschauplatz.

in einem JS Script habe ich folgendes gefunden:

// on=1 or off=2
var My_Mode = 1;

(My_Mode) ? zeige(elementX) : ausblenden(elementX);

So sollte man den ternären Operator (?:) nicht verwenden. Er ist nicht als Alternativschreibweise für if-else gedacht. Obwohl er auch in ähnlichen wie dem vorliegenden Fall funktioniert, ist doch sein Hauptzweck, ein Ergebnis in Abhängigkeit von einer Bedingung zu liefern. In dem Fall wird das Ergebnis komplett ignoriert, ja selbst die aufgerufenen Funktionen scheinen nicht mal eins zu liefern. Statt etwas zu verwenden, von dem man nur die Hälfte der Funktionalität nutzt, finde ich, sollte man lieber etwas passenderes nehmen, auch wenn es dadurch etwas länger wird.

if (My_Mode == 1) {
  zeige(elementX);
} else {
  ausblenden(elementX);
}

Wenn man es denn im vorliegenden Fall als Einzeiler haben möchte, kann man ja immer noch

document.querySelector(elementX).style.display = My_Mode == 1 ? '' : 'none';

Obwohl den Style direkt zu setzen jetzt auch nicht grad die beste Kinderstube ist. Dann besser so, moderne Browser vorausgesetzt und dass die Sichtbarkeit über die Klasse active im Stylesheet geregelt ist:

if (My_Mode == 1) {
  document.querySelector(elementX).classList.add('active');
} else {
  document.querySelector(elementX).classList.remove('active');
}

Und wie schon anderswo erwähnt, lieber true/false statt 1/2 nehmen.

dedlfix.