САМОСТОЯТЕЛЬНОЕ ОБУЧЕНИЕ ДЛЯ ВЕБ РАЗРАБОТЧИКОВ
×

JS Учебник

JS Главная JS Введение JS Где установить? JS Вывод JS Заявления JS Синтаксис JS Комментарии JS Переменные JS Let JS Const JS Операторы JS Арифметика JS Присваивание JS Типы данных JS Функции JS Объекты JS События JS Строки JS Методы строк JS Поиск строк JS Шаблоны строк JS Числа JS Методы чисел JS Массивы JS Методы массива JS Сортировка массива JS Итерация массива JS Постоянный массив JS Даты JS Формат дат JS Методы получения дат JS Методы набора дат JS Объекты Math JS Случайные числа JS Булевы JS Сравнения JS Оператор If...Else JS Оператор Switch JS Цикл For JS Цикл For In JS Цикл For Of JS Цикл While JS Оператор Break JS Повторяющиеся JS Наборы JS Карты JS Typeof JS Преобразование JS Битовые JS Выражения JS Ошибки JS Область JS Подъемный JS Строгий JS Ключевое слово this JS Стрелки JS Классы JS JSON JS Отладчик JS Стиль JS Практика JS Ошибки JS Эффективность JS Слова

JS Версии

JS Версии JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE/Edge JS История

JS Объекты

Определение объекта Свойства объекта Методы объекта Отображение объекта Доступ объекта Конструкторы объекта Прототипы объекта Повторяющиеся объекты Набор объектов Карты объекта Справочник объектов

JS Функции

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

JS Классы

Введение класса Наследование класса Статистический класс

JS Асинхронный

JS Обратный вызов JS Асинхронный JS Обещания JS Асинхронный

JS HTML DOM

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

JS Браузер BOM

JS Window JS Экран JS Расположение JS История JS Навигатор JS Предупреждение JS Синхронизация JS Куки

JS Веб APIы

Веб API Введение Веб API История Веб API Хранилище Веб API Работник Веб API Извлечь Веб API Геолокации

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 Строки JSON Объекты JSON Массивы JSON PHP JSON HTML JSON JSONP

JS или jQuery

jQuery Селекторы jQuery Элементы jQuery CSS jQuery DOM

JS Примеры

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

JS Справочник

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


JavaScript - Числа



В 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:

Значение (также известное как дробь / мантисса) Экспонента Подписать
52 bits (0 - 51)  11 bits (52 - 62) 1 bit (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 - не число

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

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

Пример

var x = 100 / "Яблоко";  // x будет NaN (Не число)

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

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

Пример

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

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

Пример

var x = 100 / "Яблоко";
isNaN(x);               // возвращает true, потому, что x - Hе число
Попробуйте сами »

Остерегайтесь 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;            // возвращается "число"
Попробуйте сами »

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

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;     // возвращается "число"
Попробуйте сами »

Шестнадцатеричный

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

Пример

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

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

По умолчанию JavaScript отображает числа в виде десятичных знаков с основанием 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 возвращает объект
Попробуйте сами »

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

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

Пример

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

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

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

Пример

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.