smart | Webentwicklung
Alles rund um HTML5, PHP, WordPress & Co.

JavaScript: Doppelte Negation für Boolean-Typecast

29. Juni 2012
Stephan
Boolean-Typecast durch doppeltes Anwenden des Not-Operators

In diesem Artikel möchte ich kurz zeigen, 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.

Returns false if its single operand can be converted to true; otherwise, returns true.“ (Mozilla Developer Network)

Ein paar Zeilen Code verdeutlichen dieses vielleicht etwas besser:

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

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

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

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

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!')
}

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));

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.

Wie findet ihr diese Typumwandlung? Habt ihr selbst schon mal diese Art des Boolean-Typcastings gesehen oder sogar selbst eingesetzt?

Kommentare  
0 Kommentare vorhanden
0 Trackbacks/Pingbacks vorhanden
Du bist herzlich eingeladen auch ein Kommentar zu hinterlassen!
Kommentar schreiben

Vielen Dank für dein Kommentar!