Bang Bang Operator (Truthiness Evaluator)

JS
S
JavaScript

Simple snippet explaining the !! operator.

1// Evaluate the truthiness of Booleans (it does double inversion ! !)
2!!false === false // true
3!!true === false // false
4
5// Evaluate the truthiness of numbers (if it's zero it's false, otherwise it's true)
6!!0 // false
7!!NaN // false *just for the fun of it :)
8!!Infinity // true
9!!3 //true
10!!-3 // true
11
12// Evaluate the truthiness of casting (eg. if it's NaN is false)
13!!parseInt("foo") // false
14!!parseInt("4===4") // false
15!!parseInt(4.5); // true
16
17// Evaluate the truthiness of strings
18!!"" // false (yeah, empty is false) 
19!!"false" // true
20
21// Evaluate return types
22!!nulll // false
23!!undefined // false
24
25// Evaluate Objects / Arrays
26!![] // true (still a valid array)
27!!{} // true (still a valid object, any object will be valid, even new Boolean(false))

Created on 2/17/2018