Bang, Bang, Bool! … WAT?!

Bang, Bang, Bool! … WAT?!

JavaScript kann man nur lieben! … oder? Naja, zugegeben, ein paar Besonderheiten und Eigenheiten hat die Lady schon manchmal – aber so ist das eben mit den Frauen 😉

Und irgendwie überrascht mich JavaScript dann doch immer wieder einmal. Letzte Woche z.B. habe ich mir eine JavaScript-Bibliothek angeschaut und bin dabei auf folgenden Ausdruck gestoßen: !!variable… WAT?

Ich fühlte mich direkt an das legendäre „NaNNaNNaNNaN Batman!“ Video von Gary Bernhardt erinnert, ein Meisterstück der JavaScript-Realitäts-Komik:

Ok, was ist denn nun der „!!“-Operator? Es ist nichts weiter als der Negations-Operator „!“ doppelt angewandt. Aber… WAT? Warum das Ganze? Im Prinzip handelt es sich bei !! um einen „cast-to-bool“ Operator. Damit werden jedwede Ausdrücke hart nach bool konvertiert. Dies ist auf die Eigenschaft von JavaScript zurückzuführen, dass jedem Wert auch ein bool-Wert innewohnt: if('') wird zu false ausgewertet, ebenso if(0) (diese Werte sind „falsy“). if(1) oder if('batman') hingegen zu true (diese Werte sind „truthy“).

Ein !variable castet einen beliebigen Ausdruck durch die Negation hart nach bool, allerdings ist der Wahrheitswert invertiert. Dies korrigiert die zweite Negation !!variable. Bang, Bang, Bool… ach, JavaScript kann man nur lieben 😉

Ich bin freiberuflicher Senior C#/.NET Softwareentwickler im Raum Frankfurt/Main. Mit Leidenschaft für Software-Design, Clean Code und moderne Technologien in den Bereichen Web, Win und Mobile.

0 Kommentare

Eine Antwort hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*