Арифметика
Чему вы научитесь:
- считать остаток и округлять через
%,Math.floorиMath.trunc; - сравнивать значения через
===и объяснять, чем опасен==; - выбирать одно из двух значений через
&&,||и??; - предсказывать, когда JavaScript сам превращает строку в число или число в строку.

Арифметика в программе похожа на калькулятор со своими правилами. Он складывает, вычитает и делит как в школе, но кое в чём ведёт себя иначе. Например, он не различает целые и дробные числа.
Возьмём задачу, которая встречается постоянно: сколько часов в 135 минутах? Чтобы перевести минуты в часы, их делят на 60. Результат — 2.25, а не 2: в JavaScript у целых и дробных чисел один тип number, поэтому / сохраняет дробную часть.
const minutes = 135;
console.log(minutes / 60); // 2.25
console.log(Math.floor(minutes / 60)); // 2
console.log(minutes % 60); // 15
console.log(2 ** 10); // 1024Давайте разберём программу по строкам:
minutes / 60печатает2.25: два часа и ещё четверть часа.Math.floor(minutes / 60)отбрасывает дробь и оставляет2, число полных часов.minutes % 60печатает15: столько минут не вошло в полные часы.2 ** 10печатает1024.
Остаток и степень
Целую часть отдаёт Math.floor, а % даёт остаток от деления: 135 минут — это 2 часа и 15 минут. Оператор ** возводит в степень: 2 ** 10 — произведение десяти двоек.
Остаток удобно представить так. Минуты раскладывают по коробкам, и в каждую коробку помещается ровно 60 минут. Две коробки заполнились, а 15 минут не поместились ни в одну. Эти 15 минут и есть остаток.
Делить с остатком можно и дробные числа: 5.5 % 2 — это 1.5.
Порядок действий
Порядок действий тот же, что в школе:
- сначала
**; - затем
*,/и%; - последними
+и-.
Скобки меняют этот порядок: (2 + 3) * 4 даёт 20.
Округление
Чтобы понять округление, представьте числовую прямую: меньшие числа слева, большие справа. Два способа округления ведут себя на ней по-разному:
Math.floorокругляет вниз, к меньшему числу, то есть всегда шагает влево;Math.truncотбрасывает дробную часть и оставляет только цифры до точки.
Для положительных чисел результат одинаковый, а для отрицательных они расходятся: Math.floor(-3.5) даёт -4, а Math.trunc(-3.5) даёт -3. Число -4 меньше, чем -3, поэтому «вниз» для Math.floor означает дальше от нуля.
Знак остатка
У остатка от % есть особенность: его знак совпадает со знаком левого числа, того, которое делят. В математике остаток не бывает отрицательным, а в JavaScript бывает:
console.log(-7 % 3, 7 % -3); // -1 1
console.log(253 % 10); // 3Здесь картинка с коробками перестаёт работать: отрицательные минуты в коробку не положить, а % с ними работает, и знак берёт у делимого.
Где остаток пригодится:
- остаток от деления положительного целого числа на 10 — его последняя цифра, как
3у253; - остаток от деления на 2 говорит о чётности: у чётного числа он
0, у нечётного1или-1.
На собеседованиях любят спрашивать, как проверить число на нечётность. Ловушка в знаке: -3 % 2 даёт -1, а не 1, поэтому проверка «остаток равен 1» отрицательное нечётное число пропустит.
Изменить переменную
Чтобы прибавить к переменной число, не обязательно писать её имя дважды. Запись total += 5 значит то же, что total = total + 5: как будто в копилку total кладут ещё пять монет. Это составное присваивание, и у каждого оператора оно своё: -=, *=, /=, %=.
Запись count++ прибавляет единицу, а count-- вычитает её. Увеличение на единицу называют инкрементом. Все эти записи меняют переменную, поэтому она должна быть объявлена через let.
let total = 10;
total += 5;
total *= 2;
total++;
console.log(total); // 31Разберём по шагам:
let total = 10кладёт вtotalчисло10.total += 5прибавляет пять: теперь там15.total *= 2умножает на два:30.total++прибавляет единицу, и программа печатает31.
Частая ошибка
Среднее двух чисел считают без скобок:
const a = 4;
const b = 6;
const average = a + b / 2; // ✗
console.log(average); // 7Деление выполняется раньше сложения, поэтому программа считает 4 + 3 и печатает 7 вместо 5. Ошибки JavaScript не сообщает, и неверное число уходит дальше в вычисления. Возьмите сумму в скобки: (a + b) / 2 даёт 5.
Главное
/сохраняет дробную часть;Math.floorокругляет вниз, аMath.truncотбрасывает дробь.%даёт остаток, и его знак совпадает со знаком делимого:-7 % 3— это-1.- Сначала
**, затем*,/и%, последними+и-; скобки меняют порядок. +=и другие составные присваивания меняют переменную на месте, а++прибавляет единицу.
Подпишись, чтобы пройти курс
Курс бесплатный. Войди через Telegram и подпишись на канал — откроются все уроки.