Question

I saw this line of code in a book:

!!(document.all && document.uniqueID);

Why is it necessary to use the double not operator? Do not the && operator already transform the result to a Boolean?

Was it helpful?

Solution

&& will return the value of document.uniqueID (if document.all has any value other than '',false, null, undefined, 0, NaN) for document.all && document.uniqueID:

 for Example 45 === (true && 45) //true

From mozilla.org.

Logical AND (&&) expr1 && expr2 returns expr1 if it can be converted to false; otherwise, it returns expr2. Thus, when used with Boolean values, && returns true if both operands are true; otherwise, it returns false.

So it is necessary to use !! to convert the above expression into Boolean.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top