Math.hypot() вычисляет корень из суммы квадратов аргументов.
Проще всего запомнить так: это удобный способ найти гипотенузу или расстояние.
Синтаксис
Math.hypot(x1, x2, ...)
Метод принимает любое количество чисел.
Что делает Math.hypot()
Math.hypot() считает результат по формуле:
sqrt(x1^2 + x2^2 + ...)
Самый известный пример - гипотенуза прямоугольного треугольника.
console.log(Math.hypot(3, 4)); // 5
Потому что:
3 * 3 = 94 * 4 = 169 + 16 = 25sqrt(25) = 5
Что возвращает Math.hypot()
Math.hypot() возвращает число типа number.
const result = Math.hypot(6, 8);
console.log(result); // 10
console.log(typeof result); // "number"
Не только два аргумента
Метод умеет работать не только с двумя числами.
console.log(Math.hypot(3, 4, 12)); // 13
Это полезно, когда нужно считать расстояние сразу по нескольким измерениям.
Один аргумент и пустой вызов
Если передать одно число, результатом будет его модуль.
console.log(Math.hypot(5)); // 5
console.log(Math.hypot(-5)); // 5
Если не передать ничего, метод вернёт 0.
console.log(Math.hypot()); // 0
Отрицательные числа
Отрицательные значения не мешают, потому что внутри они возводятся в квадрат.
console.log(Math.hypot(-3, 4)); // 5
Знак тут не важен, важна только величина числа.
Math.hypot() и Math.sqrt(a * a + b * b)
На первый взгляд кажется, что это одно и то же.
console.log(Math.hypot(3, 4)); // 5
console.log(Math.sqrt(3 * 3 + 4 * 4)); // 5
Для обычных чисел результат часто совпадает.
Но Math.hypot() полезен тем, что лучше справляется с очень большими значениями.
console.log(Math.hypot(1e200, 1e200)); // 1.414213562373095e+200
console.log(Math.sqrt(1e200 * 1e200 + 1e200 * 1e200)); // Infinity
Именно поэтому Math.hypot() считается более надёжным вариантом.
Расстояние между точками
Один из самых частых сценариев - вычисление расстояния.
const dx = x2 - x1;
const dy = y2 - y1;
console.log(Math.hypot(dx, dy));
Такой код читается проще, чем ручная формула с квадратами и корнем.
Неявное приведение типов
Math.hypot() сначала пытается привести аргументы к числам.
console.log(Math.hypot("3", "4")); // 5
console.log(Math.hypot(null, 4)); // 4
console.log(Math.hypot(undefined, 4)); // NaN
На практике обычно лучше передавать в метод уже готовые числа.
NaN и Infinity
Для специальных значений метод ведёт себя предсказуемо.
console.log(Math.hypot(NaN, 4)); // NaN
console.log(Math.hypot(Infinity, 4)); // Infinity
Числа не меняются
Math.hypot() не изменяет исходные значения. Он только возвращает новый результат.
const a = 3;
const b = 4;
const result = Math.hypot(a, b);
console.log(a); // 3
console.log(b); // 4
console.log(result); // 5
Когда это полезно
Math.hypot() удобно использовать, когда:
- нужно найти гипотенузу
- нужно посчитать расстояние между точками
- аргументов больше двух
- важна надёжность на очень больших числах
Пример:
const distance = Math.hypot(x2 - x1, y2 - y1);
Частые ошибки
Писать длинную формулу вручную без необходимости
Math.sqrt(a * a + b * b)
Такой вариант работает, но Math.hypot(a, b) читается проще.
Думать, что метод принимает только два числа
console.log(Math.hypot(3, 4, 12)); // 13
На самом деле аргументов может быть больше.
Забывать про неявное приведение типов
console.log(Math.hypot(null, 4)); // 4
console.log(Math.hypot(undefined, 4)); // NaN
Быстрая памятка
Math.hypot()вычисляет корень из суммы квадратов аргументов- метод возвращает
number - подходит для гипотенузы и расстояния
- принимает любое количество аргументов
- если аргумент один, результат равен его модулю
- на больших числах он надёжнее, чем ручная формула через
Math.sqrt()
Коротко
Math.hypot() - это удобный способ посчитать гипотенузу или расстояние в JavaScript. Главное, что стоит запомнить: метод принимает любое количество аргументов и часто лучше ручной формулы через Math.sqrt(a * a + b * b), особенно на больших числах.