What is double not !! operator in JavaScript
Understanding the double not operator and how it converts values to boolean in JavaScript
Introduction
As I was reading some JavaScript open-source projects, I found a double not-in-if statement of the JavaScript file which felt weird to me like this.
if(!!SomeVariable){ // ??
//some
}
So let's find out what is !! in JavaScript.
This is a shorthand way to convert any value to a boolean. But before that lets know about the truthy and falsey concepts in JavaScript.
Note: The terms truthy and falsey, which were coined by Douglas Crockford in his book called "JavaScript: The Best Parts".
According to the concept, these 6 things are falsey:
undefinednullNaN0""(empty string)false(of Course)
whereas any object like function, arrays, etc is truthy.
We do have a single not(!) in JavaScript which also converts a value to the boolean. But double not(!!) convert it to a real boolean value.
Let's dive into the code:
let someVariable = 0;
someVariable ? true : false //return false
!someVariable ? true : false //return true
!!someVariable //return false
typeof !!someVariable // return boolean
Explanation:
- The first expression has
0so, it returnsfalseas a result. - Second expression will reverse the logical(true or false) state of the given
someVariable. So it returntrueas result. - Third expression has converted the
someVariableinto the boolean with its state i.e.false. - You can check type of
!!someVariablewhich returnboolean.
Conclusion:
The double not(!!) is great way to convert any variable to the boolean. Hope this help you understanding double not in JavaScript Projects.
