Math.max() возвращает наибольшее число из переданных аргументов.
Проще всего запомнить так: метод выбирает самое большое значение из списка.
Синтаксис
Math.max(x1, x2, ...)
Метод принимает любое количество аргументов.
Что делает Math.max()
Math.max() сравнивает все переданные значения и возвращает максимальное.
console.log(Math.max(10, 4, 7)); // 10
console.log(Math.max(-3, 8, 0)); // 8
console.log(Math.max(2, 2, 2)); // 2
Если максимальное значение встречается несколько раз, результат всё равно будет одним и тем же числом.
Что возвращает Math.max()
Math.max() возвращает число типа number.
const result = Math.max(12, 5, 9);
console.log(result); // 12
console.log(typeof result); // "number"
Это именно число, а не строка.
Один аргумент и пустой вызов
Если передать один аргумент, метод просто вернёт его.
console.log(Math.max(5)); // 5
console.log(Math.max(-12)); // -12
Если не передать ничего, результатом будет -Infinity.
console.log(Math.max()); // -Infinity
Сначала это может выглядеть странно, но такое поведение полезно как стартовое значение при поиске максимума.
Отрицательные и дробные числа
Метод одинаково хорошо работает с целыми, отрицательными и дробными значениями.
console.log(Math.max(-4, -9, -2)); // -2
console.log(Math.max(3.5, 2.1, 8.7)); // 8.7
console.log(Math.max(-1.5, 0, 2)); // 2
Чем больше число на числовой прямой, тем больше шанс, что именно оно и вернётся.
Math.max() и массив
Вот здесь часто возникает ошибка.
Math.max() ждёт не массив, а отдельные аргументы.
const numbers = [8, 3, 12, 1];
console.log(Math.max(numbers)); // NaN
Если передать массив напрямую, метод не получит список чисел для сравнения.
Правильный вариант - развернуть массив через оператор ....
const numbers = [8, 3, 12, 1];
console.log(Math.max(...numbers)); // 12
Именно так обычно ищут максимальное значение в массиве.
Если массив пустой, результат снова будет -Infinity.
const numbers = [];
console.log(Math.max(...numbers)); // -Infinity
Math.max() и Math.min()
Math.max() и Math.min() работают в противоположные стороны.
console.log(Math.max(4, 9, 1)); // 9
console.log(Math.min(4, 9, 1)); // 1
Math.max()ищет самое большое значениеMath.min()ищет самое маленькое
Их часто используют вместе, когда значение нужно ограничить диапазоном.
const value = -20;
const limited = Math.max(value, 0);
console.log(limited); // 0
Здесь Math.max() не даёт значению стать меньше 0.
Неявное приведение типов
Math.max() сначала пытается привести аргументы к числам.
console.log(Math.max("10", "3", 7)); // 10
console.log(Math.max(null, 5)); // 5
console.log(Math.max(true, 5)); // 5
console.log(Math.max(undefined, 5)); // NaN
Из-за этого строки с числами могут сработать, но полагаться на такое поведение обычно не стоит.
Если хотя бы один аргумент не удаётся нормально превратить в число, результатом станет NaN.
console.log(Math.max("10", "abc")); // NaN
NaN и Infinity
Для специальных числовых значений метод ведёт себя предсказуемо.
console.log(Math.max(NaN, 4)); // NaN
console.log(Math.max(Infinity, 4)); // Infinity
console.log(Math.max(-Infinity, 4)); // 4
Infinity всегда будет самым большим значением, а -Infinity может использоваться как стартовая нижняя граница.
Числа не меняются
Math.max() не изменяет исходные значения. Он только возвращает новый результат.
const a = 15;
const b = 7;
const max = Math.max(a, b);
console.log(a); // 15
console.log(b); // 7
console.log(max); // 15
Когда это полезно
Math.max() удобно использовать, когда:
- нужно найти самое большое значение среди нескольких чисел
- нужно получить максимальную цену, длину, координату или оценку
- нужно ограничить значение снизу
Пример:
const discount = -15;
const safeDiscount = Math.max(discount, 0);
console.log(safeDiscount); // 0
Так можно легко сказать: “значение не должно быть меньше нуля”.
Частые ошибки
Передавать массив без spread
const numbers = [8, 3, 12, 1];
console.log(Math.max(numbers)); // NaN
Нужно писать Math.max(...numbers).
Забывать, что пустой вызов возвращает -Infinity
console.log(Math.max()); // -Infinity
Если список значений может быть пустым, этот случай лучше предусмотреть отдельно.
Передавать значения, которые не приводятся к числу
console.log(Math.max("10", "abc")); // NaN
Одного неподходящего значения достаточно, чтобы итогом стал NaN.
Быстрая памятка
Math.max()возвращает самое большое значение из аргументов- метод возвращает
number - аргументов может быть сколько угодно
- если аргумент один, вернётся он же
- если аргументов нет, результатом будет
-Infinity - для массива обычно используют
Math.max(...array) - если хотя бы один аргумент превращается в
NaN, итог тоже будетNaN
Коротко
Math.max() - это стандартный способ найти максимальное число в JavaScript. Главное, что стоит запомнить: метод принимает отдельные аргументы, а для массива его обычно вызывают как Math.max(...array).