Объект Math — JavaScript — Дока
- Кратко
- Как пишется
- Как понять
- На практике
- Дока Дог советует
Кратко
Скопировано
Math
— это объект, хранящий в себе различные математические константы (например число π) и функции типа вычисления квадратного корня. Обычно используется для генерации случайных чисел или округления значений.
Как пишется
Скопировано
Для использования констант из объекта Math
достаточно просто их указать. Таких констант куча, поэтому при необходимости их нужно поискать в документации:
console.log(Math.PI)// 3.141592653589793
console.log(Math.PI)
// 3.141592653589793
Для вызова функций из объекта Math также достаточно просто их указать:
console.log(Math.abs(-118))// 118
console.log(Math.abs(-118))
// 118
Как понять
Скопировано
Объект Math
можно считать сборником полезных функций и значений. Чаще всего используются функции для получения случайного числа, отрисовки элементов в случайном порядке или генерации фоновой картинки.
На практике
Скопировано
Дока Дог советует
Скопировано
🛠 Используйте Math
для генерации случайных чисел в некритичных с точки зрения криптографии местах: выборе случайного элемента из массива и подобных задачах.
🛠 Часть функций используется для округления чисел.
🛠 Ещё при работе с числами пригодится явный парсинг. Например, при получении значения поля нет гарантии, что полученный результат — число. Это может быть и строка в которой записано число. А может быть и строка с числом, но пользователь случайно допустил опечатку и ввёл в качестве возраста не «22» а «22», нажав клавишу \ находящуюся возле Enter. Такие случаи не должны рушить работу страницы.
Для таких случаев и нужен парсинг. Он бывает двух видов — parse
и parse
. В зависимости от используемой функции будет или целочисленный результат, или дробное число. Если парсинг не удался, то результатом будет NaN
:
🛠 Константы и математические функции чаще всего используются в рисовании или расчётах:
Открыть демо в новой вкладкеЕсли вы нашли ошибку, отправьте нам пул-реквест!
Во время отправки формы что-то пошло не так. Попробуйте ещё раз?
←
Error
и стандартные ошибки
ctrl + alt + ←
→
Math
, Math
, Math
и Math
ctrl + alt + →
JavaScript арифметика
❮ Предыдущая Следующая Глава ❯
Типичная вещь, чтобы сделать с числами является арифметической.
Арифметические операторы JavaScript
Арифметические операторы выполняют арифметические операции над числами (литералов или переменных).
оператор | Описание |
---|---|
+ | прибавление |
— | вычитание |
* | умножение |
/ | разделение |
% | модуль |
++ | инкремент |
— | декремент |
Арифметические операции
Типичная арифметическая операция работает на двух чисел.
Два номера могут быть литералы:
пример
var x = 100 + 50;
Попробуй сам «
или переменные:
пример
var x = a + b;
Попробуй сам «
или выражения:
пример
var x = (100 + 50) * a;
Попробуй сам «
Операторы и операнды
Числа (в арифметической операции) называются операнды.
Операция (выполнение функции между двумя операндами) определяется оператором.
Операнд | оператор | Операнд |
---|---|---|
100 | + | 50 |
Добавление оператора (+) добавляет номера:
Добавление
var x = 5;
var y = 2;
var z = x + y;
Попробуй сам «
Оператор вычитания (-) вычитает числа.
Вычитание
var x = 5;
var y = 2;
var z = x — y;
Оператор умножения (*) перемножает числа.
Умножив
var x = 5;
var y = 2;
var z = x * y;
Попробуй сам «
Оператор деления (/) делит число.
Разделив
var x = 5;
var y = 2;
var z = x / y;
Попробуй сам «
Модульный оператор (%) возвращает остаток деления.
модуль
var x = 5;
var y = 2;
var z = x % y;
Попробуй сам «
Оператор
Увеличивая
var x = 5;
x++;
var z = x;
Попробуй сам «
Оператор декремента (—) декрементирует номера.
Уменьшение номера
var x = 5;
x—;
var z = x;
Попробуй сам «
Оператор Внеочередные
Приоритет операторов описывает порядок, в котором операции выполняются в арифметическом выражении.
пример
var x = 100 + 50 * 3;
Попробуй сам «
Является результатом примера выше такой же , как 150 * 3 , или это то же самое , как 100 + 150 ?
Является ли добавление или умножение сделать в первую очередь?
Как и в традиционной школьной математике, умножение делается в первую очередь.
Умножение (*) и деление (/) имеют более высокий приоритет , чем сложение (+) и вычитание (-) .
И (как в школьной математике) приоритет может быть изменен с помощью скобок:
пример
var x = (100 + 50) * 3;
Попробуй сам «
При использовании круглых скобок, операции внутри скобок вычисляются в первую очередь.
Когда многие операции имеют одинаковый приоритет (например, сложение и вычитание), они вычисляются слева направо:
пример
var x = 100 + 50 — 3;
Попробуй сам «
JavaScript Оператор очередностью Значения
Стоимость | оператор | Описание | пример |
---|---|---|---|
19 | ( ) | Экспрессия группировка | (3 + 4) |
18 | . | член | person.name |
18 | [] | член | person[«name»] |
17 | () | вызов функции | myFunction() |
17 | new | Создайте | new Date() |
16 | ++ | Postfix Increment | i++ |
16 | — | Postfix Decrement | i— |
15 | ++ | Приставка Increment | ++i |
15 | — | Приставка Decrement | —i |
15 | ! | Логическое не | !(x==y) |
15 | typeof | Тип | typeof x |
14 | * | умножение | 10 * 5 |
14 | / | разделение | 10 / 5 |
14 | % | Модульное деление | 10 % 5 |
14 | ** | Возведение | 10 ** 2 |
13 | + | прибавление | 10 + 5 |
13 | — | вычитание | 10 — 5 |
12 | << | Сдвиг влево | x << 2 |
12 | >> | Сдвиг вправо | x >> 2 |
11 | < | Меньше, чем | x < y |
11 | <= | Меньше или равно | x <= y |
11 | > | Больше чем | x > y |
11 | >= | Больше или равно | x >= y |
10 | == | равных | x == y |
10 | === | Строгое равны | x === y |
10 | != | неравный | x != y |
10 | !== | Строгое неравными | x !== y |
6 | && | А также | x && y |
5 | || | Или | x || y |
3 | = | присваивание | x = y |
3 | += | присваивание | x += y |
3 | -= | присваивание | x -= y |
3 | *= | присваивание | x *= y |
3 | /= | присваивание | x /= y |
Красные записи показывает экспериментальную или предлагаемой технологии (ECMASScript 2016 или ES7)
Выражения в скобках полностью вычисляются до того, как значение используется в остальной части выражения.
Проверьте себя с упражнениями!
Упражнение 1 » Упражнение 2» Упражнение 3 » Упражнение 4» Упражнение 5 »
❮ Предыдущая Следующая Глава ❯
Остаток (%) — JavaScript | MDN
Остаток ( %
) возвращает остаток, оставшийся после деления одного операнда на второй операнд. Он всегда принимает знак делимого.
Оператор %
перегружен для двух типов операндов: числа и BigInt. Сначала он приводит оба операнда к числовым значениям и проверяет их типы. Он выполняет остаток BigInt, если оба операнда становятся BigInts; в противном случае он выполняет остаток числа. А TypeError
выдается, если один операнд становится BigInt, а другой становится числом.
Для операции n % d
, n
называется делимым, а d
называется делителем. Операция возвращает NaN
, если один из операндов равен NaN
, n
равен ±бесконечности или если d
равен ±0. В противном случае, если d
равно ±бесконечности или если n
равно ±0, возвращается делимое n
.
Когда оба операнда отличны от нуля и конечны, остаток r
вычисляется как r := n - d * q
, где q
— целое число, такое что r
имеет тот же знак, что и делимое n
, но при этом максимально близко к 0.
Обратите внимание, что хотя в большинстве языков ‘%’ является оператором остатка, в некоторых (например, Python, Perl) это оператор по модулю. Модуль определяется как k := n - d * q
, где q
— это целое число, такое что k
имеет тот же знак, что и делитель d
, но при этом максимально близко к 0. Для двух значений одного и того же знака они эквивалентны, но когда операнды имеют разные знаки, результат по модулю всегда имеет тот же знак, что и 9.0057 делитель , в то время как остаток имеет тот же знак, что и делимое , из-за чего они могут различаться на одну единицу d
. Чтобы получить модуль в JavaScript, вместо n % d
используйте ((n % d) + d) % d
. В JavaScript операция по модулю (у которой нет специального оператора) используется для нормализации второго операнда операторов побитового сдвига ( <<
, >>
и т. д.), что делает смещение всегда положительным.
Для деления BigInt выдается ошибка RangeError
, если делитель y
равен 0n
. Это связано с тем, что остаток от нуля возвращает NaN
, но BigInt не имеет понятия NaN
.
Остаток с положительным дивидендом
13 % 5; // 3 1 % -2; // 1 1 % 2; // 1 2 % 3; // 2 5,5 % 2; // 1,5 3н % 2н; // 1н
Остаток с отрицательным дивидендом
-13 % 5; // -3 -1 % 2; // -1 -4 % 2; // -0 -3n % 2n; // -1n
Остаток с NaN
NaN % 2; // NaN
Остаток с бесконечностью
Бесконечность % 2; // NaN Бесконечность % 0; // NaN Бесконечность % Бесконечность; // NaN 2 % Бесконечность; // 2 0 % Бесконечность; // 0
Спецификация |
---|
Спецификация языка ECMAScript # sec-multiplicative-operators |