Behöver man skriva !! för att hantera en bool i Javascript?
Svaret är nej (i 99% av fallen)
Många använder !! för att konvertera om en sträng till en bool i if-satser men det är inte nödvändigt för Javascript hanterar bool convertering i sig självt. !! är egentligen ingen egen operator utan endast två ! efter varandra. Dvs !true är false och !!true är true. Dock är syntaxen väldigt svårtolkad och eftersom den är onödig rekommenderar jag inte att man använder den alls.
Dvs du behöver inte skriva:
if (!!user.password) return true;
det räcker med
if (user.password) return true;
Det finns dock ett fall där det är bra att konvertera en sträng till en bool och det är om du behöver skapa en ny variabel som innehåller en bool flagga:
var hasPassword = user.password;
alert(hasPassword) // skriver ut lösenordet
I detta fall skulle det vara önskvärt att byta till:
var hasPassword = !! user.password;
alert(hasPassword) // skriver true
Eller nästan ännu hellre vända på problemet
var hasEmptyPassword = ! user.password;
alert(!hasEmptyPassword) // skriver true
Eller:
var hasPassword = Boolean(user.password);
alert(!hasPassword) // skriver true
Läs fler reaktioner på detta:
http://stackoverflow.com/questions/784929/what-is-the-operator-in-javascript
Och tester på vilka värden som hanteras på vilket sätt med !!:
http://jibbering.com/faq/notes/type-conversion/
Christian Landgren
2011-12-01