Übungen aus ../../function-challenge.html

Am Rande: Obwohl wir Temperaturangaben in Fahrenheit vor allem im englischsprachigen Raum erwarten, war es der deutsche Physiker Daniel Gabriel Fahrenheit (1686–1736), der die Fahrenheitskala entwickelte.

Ein paar Fixpunkte zur Prüfung:

°Celsius °Fahrenheit
Siedepunkt des Wassers bei Normaldruck 100,000 °C 212,000 °F
»Körpertemperatur des Menschen« nach Fahrenheit 35,555 °C 96,000 °F
Tripelpunkt des Wassers 0,010 °C 32,018 °F
Gefrierpunkt des Wassers bei Normaldruck 0,000 °C 32,000 °F
Kältemischung aus Wasser, Eis und NH4Cl −17,777 °C 0,000 °F
absoluter Nullpunkt −273,150 °C −459,670 °F

Lösung 1

function fahrenheit(c) {
   const f = c * 9 / 5 + 32; 
   return f;
}

console.log (fahrenheit(0));

Oder den Ausgabestring benutzerfreundlicher gestalten?

console.log (`${fahrenheit(0)} \xB0`);

Als Einzeiler mit einer Arrow-Funktion:

const f = (c) => c * 9 / 5 + 32;
console.log (f(100));

oder

console.log (`100° C entspricht ${f(100)}° Fahrenheit.`);

Lösung 2

Die erste Lösung ist eine klassische Funktion. Die Math-Methode erwartet Zahlen als Argumente, darum verwendet die Lösung den Spread-Operator (die drei Punkte vor dem Namen des Arrays).

const arr = [17, 12, 128, 129, 24, 50];
{
   function minMax(arr) {
      const min = Math.min(...arr);
      const max = Math.max(...arr);
      return {min: min, max: max}
   }
   const obj = minMax(arr);
   console.log (obj);
}

Und dieselbe Lösung als Einzeiler in der Arrow-Kurzschreibweise.

{
   const obj = (arr) => ({ min: Math.min(...arr), 
                           max: Math.max(...arr) })
}

Warum stehen die beiden Lösungen in geschweiften Klammern? Wenn wir uns auf ES6 verlassen können (Variablen nur mit let oder const deklariert), brauchen wir keine selbstausführenden Funktionen, um Variablen abzuschotten. Die geschweiften Klammern bilden jeweils einen Block. So kann const obj zweimal eingesetzt werden, aber das zweite const obj überschreibt das erste nicht.

Lösung 3

Die Berechnung der Fläche ist eine einfache Multiplikation mit dem *-Zeichen.

((breite, höhe) => {
   const fläche = breite * höhe;
   const ausgabe = `Die Fläche eines Rechtecks mit einer Breite 
                    von ${breite} und einer Höhe von ${höhe} 
                    ist ${fläche}`;
   console.log ("Lösung", ausgabe);
})(30, 20);