Ответ 1
JavaScript не имеет другого типа номера, кроме двойной точности с плавающей запятой (кроме ECMAScript 6 типизированных массивов), но основная реализация может выбирайте, чтобы хранить номера так, как им нравится, пока код JavaScript ведет себя одинаково.
JavaScript теперь компилируется, что означает, что он может быть оптимизирован многими способами, которые не очевидны в языке.
Если локальная переменная в функции только когда-либо принимает целочисленное значение и никак не подвергается вне функции, тогда она может быть реализована с использованием целочисленного типа при компиляции кода.
Реализация различается в разных браузерах. В настоящее время он, похоже, имеет огромное значение в MS Edge, большой разнице в Firefox, и никакой разницы в Chrome нет: http://jsperf.com/int-vs-double-implementation (Примечание: jsperf считает, что MS Edge - Chrome 42.)
Дальнейшие исследования:
JS-двигатели Spidermonkey (Firefox), V8 (Chrome, Opera), JavaScriptCore (Safari), Chakra (IE) и Rhino (и, возможно, другие, но сложнее найти детали реализации) используют разные способы использования целого типы или сохранение чисел как целых чисел, когда это возможно. Некоторые цитаты:
"Чтобы иметь эффективное представление чисел и JavaScript объекты, V8 представляет нас обоих с 32-битным значением. Он использует бит знать, является ли это объектом (флаг = 1) или целое число (флаг = 0), называемое здесь SMall Integer или SMI из-за его 31 бит."
http://thibaultlaurens.github.io/javascript/2013/04/29/how-the-v8-engine-works/
"JavaScript не имеет встроенного понятия целочисленного значения, но для эффективности JavaScriptCore будет представлять большинство целых чисел как int32 а не как двойной".
http://trac.webkit.org/wiki/JavaScriptCore
"[...] не двойные значения - это тег 32-разрядного типа и 32-разрядная полезная нагрузка, обычно это либо указатель, либо подписанное 32-битное целое число."
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Internals
"В Windows 10 и Microsoft Edge мы начали оптимизацию Chakras синтаксический анализатор и JIT-компилятор для идентификации неконстантной переменной объявления целых чисел, которые определены глобально и никогда измененный в течение времени выполнения программы".