​​Интересные факты про JavaScript

# NaN это число
NaN (Not A Number) это число,
а также NaN не равен самому себе.
Единственный способ проверить что то на равенство с NaN, это функция isNaN().
NaN === NaN
// False
typeof NaN
// Number

# Null это объект
Все JavaScript-программисты давно привыкли к тому, что
typeof null === 'object'; // true,
хотя фактически null — примитивное значение. Многие знают, что это баг, и лично Брэндан Айк это признает. Этот баг, вероятно, никогда не будет исправлен из-за необходимости сохранения обратной совместимости существующего кода с новыми версиями языка.

# 0.1+0.2 === 0.3 // False
На самом деле это довольно интересно. Когда у вас есть система с основанием 10 (например, наша), она может выражать только дроби, использующие простой множитель основания. Простые множители 10 – это 2 и 5. Таким образом, 1/2, 1/4, 1/5, 1/8 и 1/10 могут быть выражены чисто, потому что все знаменатели используют простые множители 10. Напротив, 1 / 3, 1/6, 1/7 и 1/9 – все повторяющиеся десятичные дроби, потому что их знаменатели используют простой множитель 3 или 7.