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

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 Заявления if...else JS Заявление switch JS Цикл for JS Цикл while JS Заявление break... JS Преобразование... JS Битовые... JS Регулярные выражения JS Ошибки JS Область JS Подъемный JS Строгий JS Ключевое слово this JS Ключевое слово let JS Константы JS Функция стрелки JS Классы JS Отладчик JS Руководство стиля JS Практика JS Распространенные ошибки JS Эффективность JS Зарезервированные слова JS Версии JS Версия ES5 JS Версия ES6 JS Версия 2016 JS Версия 2017 JS JSON

JS Формы

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

JS Объекты

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

JS Функции

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

JS Прочее

Классы введение Наследование класса Статические методы... JS Обратный вызов JS Асинхронный JS Обещания JS Асинхронный синтаксис

JS HTML DOM

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

JS Браузера BOM

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

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 Веб API

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

JS или jQuery

jQuery HTML Селекторы jQuery HTML Элементы jQuery CSS Стили jQuery HTML 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 попытается преобразовать строки в числа во всех числовых операциях:

This will work:

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.