JavaScript: Doppelte Negation für Boolean-Typecast

In diesem Beitrag zeige ich euch, was es in JavaScript mit der doppelten Anwendung des Not-Operators ! auf sich hat bzw. wofür man diese doppelte Negation eigentlich verwenden kann.

Im Allgemeinen, so wie ich es bisher am häufigsten gesehen habe, wird es häufig als Kurzschreibweise eingesetzt, um zu überprüfen, ob eine Variable ungleich vom Typ undefined oder null ist.

Einfache Negation

Der Not-Operator macht letztendlich nichts anderes als einen Wert in einen Boolean-Datentyp zu konvertieren, der dem Gegenteil des logischen Werts unseres eigentlichen Werts entspricht.

Gibt false zurück, wenn der Operand zu true konvertiert werden kann. Andernfalls wird true zurückgegeben.

Ein paar Zeilen Code verdeutlichen dieses vielleicht etwas besser:

var numVal = 1;
var strVal = 'Eins';
var boolVal = true;

// gibt 'false' aus
console.log(!numVal)

// gibt 'false' aus
console.log(!strVal)

// gibt 'false' aus
console.log(!boolVal)
JavaScript

Dabei gibt der Not-Operator in den folgenden Fällen immer true zurück:

  • 0
  • "" (leerer String)
  • undefined
  • null
  • NaN
  • false

Das können wir uns natürlich zu Nutze machen und doppelt negieren.

Doppelte Negation

Wenn wir also sicherstellen wollen, dass eine Variable einen Wert enthält, der zu einem boolschen true (logisches Wahr) konvertiert werden kann, dann brauchen wir nur den Not-Operator doppelt auf die Variable anwenden:

// undefined
var testVal;

if(!!testVal)
{
    console.log('Die Variable enthält einen Wert, der logisch wahr ist!')
}
JavaScript

In unserem Beispiel würde der if-Block nicht ausgeführt werden, weil die Variable testVal vom Typ undefined ist und die doppelte Negation false zurückliefert.

Diese doppelte Negation konvertiert unseren Wert also einfach nur in einen Boolean-Datentyp, so als ob wir direkt Boolean() anwenden würden:

var testVal;

// gibt 'true' aus
console.log(!!testVal === Boolean(testVal));
JavaScript

Fazit

Mit der doppelten Negation bzw. der doppelten Anwendung des Not-Operators ! (im englischsprachigen teilweise auch als "Double Negation Trick" bezeichnet) haben wir eine Kurzschreibweise zu Hand mit der wir einen Wert in den Datentyp Boolean konvertieren können.

Aktualisierungshistorie:
  • 29. Juni 2012
    ursprüngliche Veröffentlichung in meinem ehemaligen Blog "Smart-Webentwicklung"
Feedback

Für Feedback zum Beitrag, seien es Fragen, Korrigierungen und/oder Anregungen, könnt ihr mir gerne eine Nachricht per E-Mail oder Mastodon schreiben (siehe Kontakt).