Math.hypot()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Die statische Methode Math.hypot()
gibt die Quadratwurzel der Summe der Quadrate ihrer Argumente zurück. Das bedeutet:
Probieren Sie es aus
console.log(Math.hypot(3, 4));
// Expected output: 5
console.log(Math.hypot(5, 12));
// Expected output: 13
console.log(Math.hypot(3, 4, 5));
// Expected output: 7.0710678118654755
console.log(Math.hypot(-5));
// Expected output: 5
Syntax
Math.hypot()
Math.hypot(value1)
Math.hypot(value1, value2)
Math.hypot(value1, value2, /* …, */ valueN)
Parameter
value1
, …,valueN
-
Zahlen.
Rückgabewert
Die Quadratwurzel der Summe der Quadrate der angegebenen Argumente. Gibt Infinity
zurück, wenn eines der Argumente ±Infinity ist. Ansonsten, wenn mindestens ein Argument den Wert NaN
hat oder in NaN
konvertiert wird, gibt es NaN
zurück. Gibt 0
zurück, wenn keine Argumente angegeben werden oder alle Argumente ±0 sind.
Beschreibung
Die Berechnung der Hypotenuse eines rechtwinkligen Dreiecks oder des Betrags einer komplexen Zahl erfolgt mit der Formel Math.sqrt(v1*v1 + v2*v2)
, wobei v1 und v2 die Längen der Dreiecksseiten oder die Real- und Imaginärteile der komplexen Zahl sind. Die entsprechende Distanz in 2 oder mehr Dimensionen kann berechnet werden, indem weitere Quadrate unter die Quadratwurzel hinzugefügt werden: Math.sqrt(v1*v1 + v2*v2 + v3*v3 + v4*v4)
.
Diese Funktion macht diese Berechnung einfacher und schneller; sie rufen Math.hypot(v1, v2)
oder Math.hypot(v1, /* …, */, vN)
auf.
Math.hypot
vermeidet auch Überlauf-/Unterlaufprobleme, wenn die Größe Ihrer Zahlen sehr groß ist. Die größte Zahl, die Sie in JavaScript darstellen können, ist Number.MAX_VALUE
, etwa 10308. Wenn Ihre Zahlen größer als etwa 10154 sind, führt das Quadrieren zu Infinity. Zum Beispiel: Math.sqrt(1e200*1e200 + 1e200*1e200) = Infinity
. Wenn Sie stattdessen hypot()
verwenden, erhalten Sie eine bessere Antwort: Math.hypot(1e200, 1e200) = 1.4142...e+200
. Dies gilt auch für sehr kleine Zahlen. Math.sqrt(1e-200*1e-200 + 1e-200*1e-200) = 0
, aber Math.hypot(1e-200, 1e-200) = 1.4142...e-200
.
Mit einem Argument ist Math.hypot()
äquivalent zu Math.abs()
. Math.hypot.length
ist 2, was schwach darauf hinweist, dass sie für mindestens zwei Parameter ausgelegt ist.
Da hypot()
eine statische Methode von Math
ist, nutzen Sie sie immer als Math.hypot()
und nicht als Methode eines durch Sie erstellten Math
-Objekts (Math
ist kein Konstruktor).
Beispiele
Verwendung von Math.hypot()
Math.hypot(3, 4); // 5
Math.hypot(3, 4, 5); // 7.0710678118654755
Math.hypot(); // 0
Math.hypot(NaN); // NaN
Math.hypot(NaN, Infinity); // Infinity
Math.hypot(3, 4, "foo"); // NaN, since +'foo' => NaN
Math.hypot(3, 4, "5"); // 7.0710678118654755, +'5' => 5
Math.hypot(-3); // 3, the same as Math.abs(-3)
Spezifikationen
Specification |
---|
ECMAScript® 2025 Language Specification # sec-math.hypot |
Browser-Kompatibilität
BCD tables only load in the browser