Несколько месяцев назад, читая «Объектно-ориентированный JavaScript» Стояна Стефанова, я узнал следующее. Надеюсь, вам понравится читать. :)

NaN — число, не равное никакому числу. Даже не себе. Ага! Поэтому следующий оператор всегда будет возвращать false

$ NaN === NaN 
false

== проверяет равенство. === также проверяет тип операндов

$ true == "1"
true
$ true === "1"
false

Переменная, которая объявлена, но еще не определена, будет иметь значение undefined

$ var blahBlah;
$ console.log(blahBlah);
undefined
$ var blahBlahHmm = "";
$ console.log(blahBlahHmm);
""

В JavaScript есть два очень интересных числа: Бесконечность и -Бесконечность

$ typeof Infinity 
“number”
$ typeof -Infinity 
“number”

Если из бесконечности вычесть бесконечность, вы не получите ноль. Расскажите мне об этом!

$ Infinity - Infinity
NaN
$ - Infinity + Infinity
NaN

Бесконечность * 0 не равно 0. Хм!

$ Infinity * 0
NaN

Используя приведенный выше факт, Infinity / 0 должен быть NaN. Нет… Вместо этого это Бесконечность.

$ Infinity / 0
Infinity

null — это единственный примитивный тип данных, который также иногда считается объектом

$ typeof null
"object"

Восьмеричное число представлено 0 в начале числа

$ var num = 0644; 
$ console.log(num); 
420

Шестнадцатеричное число представлено ox в начале числа

$ var num = 0x1A4; 
$ console.log(num);
420

Экспоненты могут быть определены с помощью символа e

$ var exponent = 42e+3; 
$ console.log(num); 
42000

Самое большое число, которое может обработать JavaScript:

1.7976931348623157e+308

Так что же будет 1e+309, спросите вы!

$ console.log(1e+309)
Infinity

Наименьшее число, которое может обработать JavaScript:

5e-324

Хорошо. Я остановлюсь, иначе ваша все возрастающая любовь к JavaScript может свести вас с ума. :D