Der ein oder andere hat es vielleicht schon gesehen. In Javascript gibt es das doppelte Ausrufezeichen und nicht jeder kann damit auf anhieb etwas anfangen. Mein erster Gedanke war. Doppelte Verneinung. Ein häufiges Stilelement aus der russischen Sprache. Manche denken das ist ein Operator. Wieder andere denken, dass ist ein Tippfehler.
The double exclamation mark
Man nennt das Teil auch „the double exclamation mark“ und es ist kein Operator. Es ist einfach ein doppelter NOT Operator. Halt ein doppeltes verneinen. Hier mal kurz paar Beispiele:
true === !!true
false === !!false
!!0 === false
!!1 === true
!!"" === "" // leerer String ist false
!!null === false // null ist falsch
!!{} === true // das Gleiche wie ist das Objekt leer
!![] === true // das Gleiche wie ist das Array leer
Meine Mama ist nicht nicht Deine Mama, lieber Bruder
Man kann das schon so verwenden. Ich aber nutze es kaum in meinem Code. Ist wohl etwas für die russische Kollegen. Oder Menschen die gerne so was sagen: Meine Mama ist nicht nicht Deine Mama, lieber Bruder.
Hier mal Beispiele zu Sinn- bzw- Unsinnhaftigkeit des logischen Doppel-NOT-Operators:
var isUser = !!user_id;
var isUser = (user_id != 0) ? true : false;
var isUser = (user_id != 0);
macht durchaus sinn weil du damit ein objekt für n if oder return mal schnell checken kannst:
Wenn es zb 0, null, undefined, etc ist bekommst du ein false, sonst ein true. Lässt sich schön zur fehlerbehandlung nutzen wenn es eben zb. null ist.
Absolut, ich sichere so eine Funktion ab, damit diese sicher ein bool returnt
Dein Artikel hat mir leider gar nicht geholfen zu verstehen, was es eigentlich macht. Z.B. “var isUser = !!user_id;” erklärst du gar nicht und damit ist dein Artikel für mich absolut wertlos. Danke für nichts, ich suche also auf weiteren Seiten und du kannst dir das nächste Mal die Zeit sparen und eher spazieren gehen, als Artikel schreiben.