typeof(NaN) == 'number'
NaN stands for 'Not a Number' but as you can see it is a 'number' nonetheless.
null is a value that isn't anything.
undefined is a value that isn't even that.
A variable can be both defined and have a value of undefined at the same time.
boolean("0") = true
boolean("false") = true
+"42" = 42
!! produces a boolean
All of the above have been taken from the following video tutorial.