ЛУЧШИЙ САЙТ ДЛЯ ВЕБ-РАЗРАБОТЧИКОВ

JS Учебник

JS Старт JS Введение JS Установка JS Вывод JS Объявления JS Синтаксис JS Комментарии JS Переменные JS Операторы JS Арифметические JS Присваивание JS Типы данных JS Функции JS Объекты JS События JS Строки JS Методы строки JS Числа JS Методы числа JS Массивы JS Методы массива JS Сортировка массива JS Итерация массива JS Даты JS Форматы дат JS Методы получения дат JS Методы установки дат JS Математические JS Рандомные JS Булевы JS Сравнения JS Условия JS Switch JS Цикл For JS Цикл While JS Прерывание JS Преобразование типов JS Побитовые JS Регулярные выражения JS Ошибки JS Область действия JS Подъём JS Строгий режим JS Ключевое слово this JS Ключевое слово Let JS Ключевое слово Const JS Функции стрелок JS Классы JS Отладка JS Гид по стилю JS Лучшие практики JS Ошибки JS Производительность JS Зарезервированные слова JS Версии JS Версия ES5 JS Версия ES6 JS JSON

JS Формы

JS Формы Формы API

JS Объекты

Определения объектов Свойства объекта Методы объекта Доступ к объектам Конструкторы объектов Прототипы объектов Объект ECMAScript 5

JS Функции

Определения функций Параметры функции Обращение к функции Вызов функции Применение функции Закрытие функции

JS HTML DOM

DOM Введение DOM Методы DOM Документ DOM Элементы DOM HTML DOM CSS DOM Анимация DOM События DOM Слушатель событий DOM Навигация DOM Узлы DOM Коллекции DOM Узловые списки

JS Объектная модель браузера BOM

JS Окно JS Скрин JS Локация JS История JS Навигатор JS Всплывающее оповещение JS Тайминг JS Куки

JS AJAX

AJAX Введение AJAX XMLHttp AJAX Запрос AJAX Отклик AJAX XML Файл AJAX PHP AJAX ASP AJAX База данных AJAX Приложения AJAX Примеры

JS JSON

JSON Введение JSON Синтаксис JSON и XML JSON Типы данных JSON Анализ JSON Stringify JSON Объекты JSON Массивы JSON PHP JSON HTML JSON JSONP

JS и jQuery

jQuery Селекторы jQuery HTML jQuery CSS jQuery DOM

JS Примеры

JS Примеры JS HTML DOM JS HTML Input JS HTML Объекты JS HTML События JS Броузер JS Упражнения JS Викторина JS Сертификат

JS Справочники

JavaScript Объекты HTML DOM Объекты

JavaScript. Уроки для начинающих

JavaScript Numbers / Числа


JavaScript имеет только один тип чисел. Числа могут быть написаны с десятичными или без десятичных знаков.


Пример

var x = 3.14;    // Число с десятичными числами
var y = 3;       // Число без десятичных знаков

Попробуйте сами »

Очень большие или очень маленькие числа могут быть написаны с научной (образцовой) нотацией:

Пример

var x = 123e5;    // 12300000
var y = 123e-5;   // 0.00123

Попробуйте сами »


Числа JavaScript всегда 64-битные с плавающей точкой

В отличие от многих других языков программирования, JavaScript не определяет различные типы чисел, такие как целые, короткие, длинные, числа с плавающей точкой и т.д.

Числа JavaScript всегда хранятся как числа с плавающей запятой двойной точности в соответствии с международным стандартом IEEE 754.

Этот формат хранит числа в 64 битах, где число (дробь) хранится в битах от 0 до 51, показатель степени в битах от 52 до 62 и знак в бите 63:

Значение (aka Fraction/Mantissa) Экспонент Знак
52 бита (0 - 51) 11 бита (52 - 62) 1 бит (63)

Точность

Целые числа (числа без точки или обозначения периода) с точностью до 15 цифр.

Пример

var x = 999999999999999;   // x будет 999999999999999
var y = 9999999999999999;  // y будет 10000000000000000
Попробуйте сами »

Максимальное количество десятичных знаков равно 17, но арифметика с плавающей точкой не всегда точна на 100%:

Пример

var x = 0.2 + 0.1;         // x будет 0.30000000000000004

Попробуйте сами »

Чтобы решить проблему выше, это помогает умножить и разделить:

Пример

var x = (0.2 * 10 + 0.1 * 10) / 10;       // x будет 0.3
Попробуйте сами »

Добавление чисел и строк

ПРЕДУПРЕЖДЕНИЕ !!

JavaScript использует оператор + для сложения и объединения.

Числа слаживаются. Строки объединяются.

Если вы сложите два числа, результатом будет число:

Пример

var x = 10;
var y = 20;
var z = x + y;           // z будет 30 (число)
Попробуйте сами »

Если вы сложите две строки, результатом будет конкатенация (объединение) строк:

Пример

var x = "10";
var y = "20";
var z = x + y;           // z будет 1020 (строка)
Попробуйте сами »

Если вы сложите число и строку, результатом будет конкатенация (объединение) строк:

Пример

var x = 10;
var y = "20";
var z = x + y;           // z будет 1020 (строка)
Попробуйте сами »

Если вы сложите строку и число, результатом будет конкатенация (объединение) строк:

Пример

var x = "10";
var y = 20;
var z = x + y;           // z будет 1020 (строка)
Попробуйте сами »

Распространенная ошибка - ожидать, что этот результат будет 30:

Пример

var x = 10;
var y = 20;
var z = "результат: " + x + y;
Попробуйте сами »

Распространенная ошибка - ожидать, что этот результат будет 102030:

Пример

var x = 10;
var y = 20;
var z = "30";
var result = x + y + z;
Попробуйте сами »

Интерпретатор JavaScript работает слева направо.

Первые 10 + 20 добавляются, потому что x и y оба числа.

Затем 30 + "30" конкатенируется, потому что z является строкой.


Числовые строки

Строки JavaScript могут иметь числовое содержимое:

var x = 100;         // x это число

var y = "100";       // y это строка

JavaScript попытается преобразовать строки в числа во всех числовых операциях:

Это будет работать:

var x = "100";
var y = "10";
var z = x / y;       // z будет 10

Попробуйте сами »

Это тоже будет работать:

var x = "100";
var y = "10";
var z = x * y;       // z будет 1000

Попробуйте сами »

И это будет работать:

var x = "100";
var y = "10";
var z = x - y;       // z будет 90

Попробуйте сами »

Но это работать не будет:

var x = "100";
var y = "10";
var z = x + y;       // z не будет 110 (это будет 10010)

Попробуйте сами »

В последнем примере JavaScript использует оператор + для объединения строк.


NaN - Not a Number (Не число)

NaN является зарезервированным словом JavaScript, указывающим, что число не является допустимым числом.

Попытка сделать арифметику с нечисловой строкой приведет к результату NaN (Not a Number):

Пример

var x = 100 / "Apple";  // x будет NaN (Not a Number)

Попробуйте сами »

Однако, если строка содержит числовое значение, результатом будет число:

Пример

var x = 100 / "10";     // x будет 10
Попробуйте сами »

Вы можете использовать глобальную JavaScript функцию isNaN() чтобы узнать, является ли значение числом:

Пример

var x = 100 / "Apple";
isNaN(x);               // возвращает true, потому что x не является числом (Not a Number)
Попробуйте сами »

Не упускайте из внимания NaN. Если вы используете NaN в математической операции, результат также будет NaN:

Пример

var x = NaN;
var y = 5;
var z = x + y;         // z будет NaN
Попробуйте сами »

Или результатом может быть конкатенация (объединение):

Пример

var x = NaN;
var y = "5";
var z = x + y;         // z будет NaN5
Попробуйте сами »

NaN является числом: typeof NaN возвращает number:

Пример

typeof NaN;            // возвращает "number"
Попробуйте сами »

Infinity / Бесконечность

Infinity (или -Infinity) - это значение, которое JavaScript вернет, если вы вычислите число вне максимально возможного числа.

Пример

var myNumber = 2;
while (myNumber != Infinity) {   // Выполнить до бесконечности
  myNumber = myNumber * myNumber;
}
Попробуйте сами »

Деление на 0 (ноль) также генерирует Infinity (бесконечность):

Пример

var x =  2 / 0;       // x будет Infinity
var y = -2 / 0;       // y будет -Infinity
Попробуйте сами »

Infinity - это число: typeof Infinity возвращает number.

Пример

typeof Infinity;     // возвращает "number"
Попробуйте сами »

Hexadecimal / Шестнадцатеричное число

JavaScript интерпретирует числовые константы как шестнадцатеричные числа, если им предшествует 0x.

Пример

var x = 0xFF;        // x будет 255
Попробуйте сами »

Никогда не пишите число с начальным нулем (например, 07).
Некоторые версии JavaScript интерпретируют числа как восьмеричные, если они написаны с начальным нулем.

По умолчанию JavaScript отображает числа в виде base 10 десятичных знаков.

Но вы можете использовать метод toString() для перевода чисел из base 2 в base 36.

Шестнадацатеричное число - это base 16. Десятичное число - это base 10. Восьмеричное число - это base 8. Двоичный код - это base 2.

Пример

var myNumber = 32;
myNumber.toString(10);  // возвращает 32
myNumber.toString(32);  // возвращает 10
myNumber.toString(16);  // возвращает 20
myNumber.toString(8);   // возвращает 40
myNumber.toString(2);   // возвращает 100000
Попробуйте сами »

Числа могут быть объектами

Обычно числа JavaScript являются примитивными значениями, созданными из литералов:

var x = 123;

Но числа также могут быть определены как объекты с ключевым словом new:

var y = new Number(123);

Пример

var x = 123;
var y = new Number(123);

// typeof x возвращает число
// typeof y возвращает объект
Попробуйте сами »

Не создавайте объекты Number. Это замедляет скорость выполнения.
Ключевое слово new усложняет код. Это может привести к неожиданным результатам:

При использовании оператора == равнозначные числа равны:

Пример

var x = 500;             
var y = new Number(500);

// (x == y) является true, потому что х и у имеют равные значения
Попробуйте сами »

При использовании оператора === равные числа не равны, поскольку оператор === ожидает равенства как по типу, так и по значению.

Пример

var x = 500;             
var y = new Number(500);

// (x === y) является false потому что x и y имеют различные типы
Попробуйте сами »

Или даже хуже. Объекты нельзя сравнивать:

Пример

var x = new Number(500);             
var y = new Number(500);

// (x == y) является false потому что объекты нельзя сравнивать
Попробуйте сами »

Обратите внимание на разницу между (x==y) и (x===y).
Сравнение двух объектов JavaScript всегда вернет false.