What is the !! (not not) operator in JavaScript?

javascript, operators

Solution

It converts `Object` to `boolean`. If it was falsy (e.g., `0`, `null`, `undefined`, etc.), it would be `false`, otherwise, `true`.

!object  // Inverted Boolean
!!object // Noninverted Boolean, so true Boolean representation

So `!!` is not an operator; it's just the `!` operator twice.

It is generally simpler to do:

Boolean(object) // Boolean

Real World Example "Test IE version":

const isIE8 = !! navigator.userAgent.match(/MSIE 8.0/);
console.log(isIE8); // Returns true or false

If you ⇒

console.log(navigator.userAgent.match(/MSIE 8.0/));
// Returns either an Array or null

But if you ⇒

console.log(!!navigator.userAgent.match(/MSIE 8.0/));
// Returns either true or false

Problem

I saw this code: ``` this.vertical = vertical !== undefined ? !!vertical : this.vertical; ``` It seems to be using `!!` as an operator, which I don't recognize. What does it do?

Original source

Related problems