Учебник по 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 Случайный JS Булевы значения Сравнение JS JS-условия JS-переключатель JS цикл для Цикл JS для входа Цикл JS для Цикл JS во время Перерыв JS JS-итерации JS-наборы JS-карты JS Typeof Преобразование типов JS JS побитовый JS регулярное выражение JS-ошибки Область JS JS-подъем Строгий режим JS JS это ключевое слово Функция стрелки 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/пограничный История JS

JS-объекты

Определения объектов Свойства объекта Методы объекта Отображение объекта Средства доступа к объектам Конструкторы объектов Прототипы объектов Итерации объектов Наборы объектов Карты объектов Ссылка на объект

JS-функции

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

JS-классы

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

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

Обратные вызовы JS JS асинхронный JS-обещания JS асинхронный/ожидание

JS HTML DOM

Дом Введение DOM-методы Документ DOM DOM-элементы DOM HTML DOM-формы ДОМ CSS DOM-анимации События ДОМ Слушатель событий DOM DOM-навигация DOM-узлы Коллекции DOM Списки узлов DOM

Спецификация браузера JS

JS-окно JS-экран Местоположение JS История JS JS-навигатор Всплывающее оповещение JS JS Тайминг JS-куки

JS-веб-API

Введение в веб-API API веб-форм API истории веб-поиска API веб-хранилища API веб-работника API веб-выборки API веб-геолокации

JS АЯКС

Введение в АЯКС AJAX XMLHttp АЯКС-запрос AJAX-ответ XML-файл AJAX АЯКС PHP АЯКС АСП База данных AJAX AJAX-приложения Примеры AJAX

JS JSON

Введение в JSON Синтаксис JSON JSON против XML Типы данных JSON Анализ JSON Строковая JSON JSON-объекты JSON-массивы JSON-сервер JSON PHP JSON HTML JSON JSONP

JS против JQuery

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

JS-графика

JS-графика JS Холст JS сюжет JS Chart.js JS Google Диаграмма JS D3.js

JS-примеры

JS-примеры JS HTML DOM JS HTML-ввод HTML-объекты JS HTML-события JS JS-браузер JS-редактор JS-упражнения JS-викторина JS-сертификат

JS-ссылки

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


Номера JavaScript


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


Пример

let x = 3.14;    // A number with decimals
let y = 3;       // A number without decimals

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

Пример

let x = 123e5;    // 12300000
let 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 цифр.

Пример

let x = 999999999999999;   // x will be 999999999999999
let y = 9999999999999999;  // y will be 10000000000000000

Максимальное количество десятичных знаков — 17.

Плавающая точность

Арифметика с плавающей запятой не всегда точна на 100%:

let x = 0.2 + 0.1;

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

let x = (0.2 * 10 + 0.1 * 10) / 10;


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

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

JavaScript использует оператор + как для сложения, так и для конкатенации.

Добавляются числа. Строки объединены.

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

Пример

let x = 10;
let y = 20;
let z = x + y;

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

Пример

let x = "10";
let y = "20";
let z = x + y;

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

Пример

let x = 10;
let y = "20";
let z = x + y;

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

Пример

let x = "10";
let y = 20;
let z = x + y;

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

Пример

let x = 10;
let y = 20;
let z = "The result is: " + x + y;

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

Пример

let x = 10;
let y = 20;
let z = "30";
let result = x + y + z;

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

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

Затем 30 + «30» объединяются, потому что z — это строка.


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

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

let x = 100;         // x is a number

let y = "100";       // y is a string

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

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

let x = "100";
let y = "10";
let z = x / y;

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

let x = "100";
let y = "10";
let z = x * y;

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

let x = "100";
let y = "10";
let z = x - y;

Но это не сработает:

let x = "100";
let y = "10";
let z = x + y;

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


NaN — не число

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

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

Пример

let x = 100 / "Apple";

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

Пример

let x = 100 / "10";

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

Пример

let x = 100 / "Apple";
isNaN(x);

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

Пример

let x = NaN;
let y = 5;
let z = x + y;

Или результатом может быть конкатенация типа NaN5:

Пример

let x = NaN;
let y = "5";
let z = x + y;

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

Пример

typeof NaN;

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

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

Пример

let myNumber = 2;
// Execute until Infinity
while (myNumber != Infinity) {
  myNumber = myNumber * myNumber;
}

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

Пример

let x =  2 / 0;
let y = -2 / 0;

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

Пример

typeof Infinity;

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

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

Пример

let x = 0xFF;

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

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

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

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

Пример

let myNumber = 32;
myNumber.toString(10);
myNumber.toString(32);
myNumber.toString(16);
myNumber.toString(8);
myNumber.toString(2);

Числа JavaScript как объекты

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

let x = 123;

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

let y = new Number(123);

Пример

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

Не создавайте числовые объекты.

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

Числовые объекты могут давать неожиданные результаты:

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

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

При использовании ===оператора x и y не равны .

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

Обратите внимание на разницу между (x==y)и (x===y).

(x == y) правда или ложь?

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

(x === y) правда или ложь?

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

Comparing two JavaScript objects always returns false.

Complete JavaScript Number Reference

For a complete Number reference, visit our:

Complete JavaScript Number Reference.

The reference contains descriptions and examples of all Number properties and methods.