Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

myVar = !!someOtherVar [duplicate]

Can I get some clarification on why I would want to use this?

myVar = !!someOtherVar;
like image 476
jerome Avatar asked Sep 22 '10 18:09

jerome


2 Answers

In non-strictly typed languages, the ! operator converts a value to a boolean. Doing it twice would be equivalent to saying

myVar = (boolean)someOtherVar

Note that this is not recommended for code clarity.

like image 177
phsource Avatar answered Sep 22 '22 06:09

phsource


(Rewritten to clarify, simplify)

That statement performs a couple different actions:

myVar = // This portion is a regular assignment, it will store the value of the suffix
        !!someOtherVar; // This portion is evaluated to a boolean result

The !!someOtherVar, I assume, is what you're really asking about. The answer is simple: it performs two logical NOT operations against the truthiness (a Javascript'ism) of someOtherVar.

In other words, if you understand the ! operator, this just combines two of them (!! isn't a different operator). By doing this it essentially returns the boolean evaluation of someOtherVar--in other words, it's a cast from whatever type someOtherVar is to boolean.

So... to walk through this, and pay attention to the result of myVar:

myVar = someOtherVar; // myVar will be whatever type someOtherVar is
myVar = !someOtherVar; // myVar will *always be boolean, but the inverse of someOtherVar's truthiness
myVar = !!someOtherVar; // myVar will *always be boolean, and be the equivalent of someOtherVar's truthiness
like image 38
STW Avatar answered Sep 23 '22 06:09

STW