JS doesn't quite follow IEEE 754. For example the specification says that 1 ** NaN should equal 1, but in JS it is NaN. See: Why does IEEE 754 define 1 ^ NaN as 1, and why do Java and Javascript violate this?
1 ** NaN