Share via


Benutzerdefinierte JScript-Funktionen

JScript enthält zwar eine Vielzahl von integrierten Funktionen, Sie können jedoch auch eigene Funktionen erstellen. Eine Funktionsdefinition besteht aus einer Funktionsanweisung und einem Block von JScript-Anweisungen.

Definieren eigener Funktionen

Die checkTriplet-Funktion im folgenden Beispiel verwendet als Argumente die Seitenlängen eines Dreiecks. Mit diesen Informationen berechnet die Funktion, ob es sich um ein rechtwinkliges Dreieck handelt. Dazu wird geprüft, ob die drei Zahlen den Satz des Pythagoras erfüllen (das Quadrat über der Länge der Hypotenuse eines rechtwinkligen Dreiecks ist gleich der Summe der Quadrate über den beiden anderen Seiten). Die checkTriplet-Funktion ruft eine von zwei weiteren Funktionen auf, um diesen Test durchzuführen.

Beachten Sie die Verwendung einer sehr kleinen Zahl (epsilon) als Testvariable in der Gleitkommaversion des Tests. Wenn die Werte keine ganzen Zahlen sind, ist es aufgrund der bei Gleitkommaberechnungen auftretenden Ungenauigkeiten und Rundungsfehler nicht ratsam, direkt zu überprüfen, ob die drei Zahlen den Satz des Pythagoras erfüllen. Da die direkte Überprüfung ein genaueres Ergebnis liefert, wird im folgenden Code zunächst festgestellt, ob die direkte Überprüfung zulässig ist. Wenn dies der Fall ist, wird diese Art der Überprüfung verwendet.

Die Typanmerkung wird bei der Definition dieser Funktionen nicht verwendet. Für diese Anwendung ist es sinnvoll, dass die checkTriplet-Funktion sowohl ganze Zahlen als auch Gleitkommazahlen als Datentypen annimmt.

const epsilon = 0.00000000001; // Some very small number to test against.

// Type annotate the function parameters and return type.
function integerCheck(a : int, b : int, c : int) : boolean {
   // The test function for integers.
   // Return true if a Pythagorean triplet.
   return ( ((a*a) + (b*b)) == (c*c) );
} // End of the integer checking function.

function floatCheck(a : double, b : double, c : double) : boolean {
   // The test function for floating-point numbers.
   // delta should be zero for a Pythagorean triplet.
   var delta = Math.abs( ((a*a) + (b*b) - (c*c)) * 100 / (c*c));
   // Return true if a Pythagorean triplet (if delta is small enough).
   return (delta < epsilon);
} // End of the floating-poing check function.

// Type annotation is not used for parameters here. This allows 
// the function to accept both integer and floating-point values 
// without coercing either type.
function checkTriplet(a, b, c) : boolean { 
   // The main triplet checker function.
   // First, move the longest side to position c.
   var d = 0; // Create a temporary variable for swapping values
   if (b > c) { // Swap b and c.
      d = c;
      c = b;
      b = d;
   }
   if (a > c) { // Swap a and c.
      d = c;
      c = a;
      a = d;
   }

   // Test all 3 values. Are they integers?
   if ((int(a) == a) && (int(b) == b) && (int(c) == c)) { // If so, use the precise check.
      return integerCheck(a, b, c); 
   } else { // If not, get as close as is reasonably possible.
      return floatCheck(a, b, c); 
   }
} // End of the triplet check function.

// Test the function with several triplets and print the results.
// Call with a Pythagorean triplet of integers.
print(checkTriplet(3,4,5));
// Call with a Pythagorean triplet of floating-point numbers.
print(checkTriplet(5.0,Math.sqrt(50.0),5.0));
// Call with three integers that do not form a Pythagorean triplet.
print(checkTriplet(5,5,5));

Ausgabe dieses Programms:

true
true
false

Siehe auch

Referenz

function-Anweisung

Weitere Ressourcen

JScript-Funktionen

JScript-Datentypen