Math.hypot()

Сводка

Метод Math.hypot() возвращает квадратный корень суммы квадратов своих аргументов, то есть

Math.hypot ( v 1 , v 2 , , v n ) = i = 1 n v i 2 = v 1 2 + v 2 2 + + v n 2 \mathtt{\operatorname{Math.hypot}(v1, v_2, \dots, v_n)} = \sqrt{\sum{i=1}^n v_i^2} = \sqrt{v_1^2 + v_2^2 + \dots + v_n^2}

Синтаксис

Math.hypot([value1[, value2[, ...]]])

Параметры

value1, value2, ...

Числа.

Описание

Поскольку метод hypot() является статическим методом объекта Math, вы всегда должны использовать его как Math.hypot(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

При вызове без аргументов результатом вызова будет значение +0.

Если хотя бы один из аргументов не может быть преобразован в число, результатом будет NaN.

При вызове с одним аргументом, метод Math.hypot() то же самое значение, что и метод Math.abs().

Примеры

Пример: использование метода Math.hypot()

Math.hypot(3, 4);        // 5
Math.hypot(3, 4, 5);     // 7.0710678118654755
Math.hypot();            // 0
Math.hypot(NaN);         // NaN
Math.hypot(3, 4, 'foo'); // NaN, +'foo' => NaN
Math.hypot(3, 4, '5');   // 7.0710678118654755, +'5' => 5
Math.hypot(-3);          // 3, то же самое, что и Math.abs(-3)

Полифил

Этот метод может эмулироваться следующим образом:

Math.hypot = Math.hypot || function() {
  var y = 0;
  var length = arguments.length;

  for (var i = 0; i < length; i++) {
    if (arguments[i] === Infinity || arguments[i] === -Infinity) {
      return Infinity;
    }
    y += arguments[i] * arguments[i];
  }
  return Math.sqrt(y);
};

Спецификации

Specification
ECMAScript Language Specification
# sec-math.hypot

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также