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

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

JS Формы

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 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 или jQuery

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

JS Примеры

JS Примеры JS HTML DOM JS HTML Ввод


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 биты (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 - не число

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

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

Пример

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

Редактор кода »

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

Пример

var x = 100 / "10";    // x будет 10
Редактор кода »

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

Пример

var x = 100 / "Apple";
isNaN(x);               // возвращает true, поскольку x не является числом
Редактор кода »

Следите за 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 возвращает число:

Пример

typeof NaN;            // результат "number"
Редактор кода »

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

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

Пример

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

Деление на 0 (ноль) также порождает бесконечность:

Пример

var x =  2 / 0;          // x будет бесконечность
var y = -2 / 0;          // y будет минус бесконечность
Редактор кода »

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

Пример

typeof Infinity;        // результат "число"
Редактор кода »

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

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

Пример

var x = 0xFF;           // x будет 255
Редактор кода »

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

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

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

Шестнадцатеричное база 16. Десятичное число база 10. Восьмеричное база 8. Двоичное база 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, поскольку 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.