What is double not !! operator in JavaScript
Understanding the double not operator and how it converts values to boolean in JavaScript
What is double not !! operator 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.
