JavaScript Funktionen?

Sören Stabenow  16.01.2024, 12:36

Mahlzeit Layla,

gibt es einen speziellen Punkt den du nicht verstehst?

Layla776 
Fragesteller
 16.01.2024, 12:39

Neija ziemlich viel. Ich verstehe eigentlich alles ab switch nicht (habe keine Ahnung, was switch überhaupt bedeutet😔)

1 Antwort

switch ist eine Kurzschreibweise für eine Kette von if-Verzweigungen. (Bis darauf, dass der Ausdruck nur ein einziges Mal ausgewertet wird.)

Hier:

if (option == 1) {
    ...
} else if (option == 2) {
    ...
}

das break in switch hat dieselbe Funktion wie die } nach if. (Lass dich nicht verwirren, wenn du irgendwo was Anderes aufschnappst - es gibt Programmiersprachen, wo es Unterschiede gibt, aber die braucht man als normaler Programmierer sowieso nie.)

Verstehst du Variablen, Zuweisungen, Number(...), prompt(...), String-Verkettung, console.log(...), selbstdefinierte Funktionen etc.?

Woher ich das weiß:Berufserfahrung – Software-Entwickler
Layla776 
Fragesteller
 16.01.2024, 13:44

DANKE deine Erklärung ist wirklich super! Bei String Verkettung und selbstdefinierte Funktionen kenn ich mich nicht aus😔Funktionen find ich super schwierig

0
WeissBrot965  16.01.2024, 13:56
@Layla776

Hi. Vereinfacht schreibst du in eine Funktion Code, denn du später durch das aufrufen wiederverwenden kannst. Was genau verstehst du daran nicht?

0
PWolff  16.01.2024, 14:48
@Layla776

String-Verkettung:

Zahlen kann man mit "+" zusammenzählen, z. B.

a = 4 + 5

schiebt 9 in die Variable a.

Aber JavaScript missbraucht das "+"-Zeichen auch dafür, Texte (Zeichenketten/Strings) zusammenzufügen.

b = "abc" + "def"

schreibt "abcdef" in die Variable b.

1
PWolff  16.01.2024, 15:21
@Layla776

Funktionen sind ein so fundamentaler Bestandteil des Programmierens, dass es ohne nicht geht. Aber es hilft, wenn man

a) sich damit vertraut macht, eingebaute Funktionen zu verwenden

b) mit möglichst einfachen Beispielen anfängt, eigene Funktionen zu schreiben (wie es in dieser Aufgabe versucht wird)

Eine Funktion, die hier mehrfach verwendet wird, ist console.log(). Sie tut nur etwas, gibt aber keine Rückmeldung. Vielleicht kann man auch damit anfangen, diese Funktion zu erweitern. Z. B. hätten wir vielleicht gern eine Zeitangabe bei console.log, etwa um zu sehen, wie lange irgendwas gedauert hat. Das kann man so machen:

function consoleLogWithTime(message) {
    console.log((new Date).toLocaleTimeString() + ": " + message.toString());
}

Wenn wir jetzt überall console.log(irgendwas) durch consoleLogWithTime(irgendwas) ersetzen, sehen wir vor jeder Nachricht die Uhrzeit, zu der sie ausgegeben wurde. Für einen Programmierer macht es keinen Unterschied, ob er console.log oder consoleLogWithTime verwendet. Nur der Benutzer sieht etwas leicht unterschiedliches auf dem Bildschirm.

Als Nächstes würde ich mit einer möglichst einfachen Funktion "herumspielen", am besten, ohne sie irgendwo eingebaut zu haben. Sagen wir mal, wir brauchen öfters mal das Doppelte einer Zahl, wollen uns aber die Arbeit sparen, jedesmal "2*x" hinzuschreiben. (In diesem Fall ist der Funktionsname länger, aber bei komplizierteren Funktionen merkt man schnell, wie viel Arbeit man sich spart. Auch wird die ganze Sache übersichtlicher und man muss Fehler nur an einer einzigen Stelle korrigieren.)

function double(x) { return x + x; }

So kurze Funktionen schreibe ich meistens in eine einzige Zeile - das ist nicht weniger unübersichtlich, spart aber Platz (und wird damit wieder ein Bisschen übersichtlicher).

Vielleicht bemerkst du auch, dass ich Befehle mit Semikolon abschließe - das muss man in den meisten Programmiersprachen tun, die so ähnlich aussehen wie JavaScript, deshalb habe ich mich daran gewöhnt; und auch in JavaScript musste man es am Anfang tun, aber es ist auch heute noch kein Fehler.

Wenn du jetzt auf der Konsole eingibst

double(5)

bekommst du als Ausgabe (wenig überraschend)

10

und zu

double(-4)

bekommst du

-8

usw.

Generell ist eine Funktion etwas, wo man oben was reinsteckt und unten kommt was raus. Das ist das Erste, womit man vertraut werden muss, wenn man mit Funktionen umgehen will/muss.

1
PWolff  16.01.2024, 15:23
@PWolff

Man kann auch mehrere Dinge in eine Funktion reinstecken, aber es kommt immer nur ein einziges Ding raus. Z. B. kann man zwei Zahlen addieren lassen:

function add(x, y) { return x + y; }

dann gibt

add(3, 5)

zurück:

8
1
Layla776 
Fragesteller
 16.01.2024, 15:27
@PWolff

was bedeutet das return? das war ja in meinem beispiel auch. was macht das?😅

0
PWolff  16.01.2024, 15:30
@PWolff

Der nächste Schritt ist, sich daran zu gewöhnen, wie man mit dem umgeht, was bei einer Funktion rauskommt. Man kann ja drei Zahlen direkt addieren:

5 + 6 + 7

und erhält

18

Aber man kann eine von den Additionen auch einer Funktion überlassen:

5 + add(6, 7)

hier erhält man ebenfalls

18

Was passiert hier?

Der "Parser", also das Progrämmchen, das aus unserer Eingabe etwas macht, das der Computer verstehen kann, sieht

add(

und weiß jetzt, dass die Funktion "add" gemeint ist.

Dann sieht er dahinter

6, 7

und weiß, dass diese beiden Dinge an add "übergeben" werden sollen. Danach kommt die Klammer zu

)

und der Parser weiß, dass der "Funktionsaufruf" jetzt zuende ist.

Dann macht JavaScript folgendes: es ruft add auf mit den "Argumenten" 6 und 7. Die Funktion add liefert 13 zurück.

Als Nächstes wird

5 + add(6, 7)

ersetzt durch

5 + 13

und hier weiß JavaScript von selbst, wie das auszurechnen ist, und gibt

18

auf der Konsole aus.

1
PWolff  16.01.2024, 15:36
@Layla776

"return" = "zurückgeben" (in diesem Zusammenhang).

In consoleLogWithTime kommt kein return vor, d. h. die Funktion tut (möglicherweise) irgendwas, gibt aber keinen Wert zurück. Auf der Konsole steht dann "undefined" ("undefiniert", also irgendwas, wovon wir nicht wissen, was es ist, aber sich auch keiner dafür interessiert, was es ist oder ob es überhaupt irgendwas ist).

Wenn wir die Funktion

function vier() { return 4; }

haben, sagt

return 4;

so viel wie

die Funktion ist hier zuende, es ist jetzt Zeit, "vier()" durch diesen Rückgabewert "4" zu ersetzen

z. B. wird dadurch

5 + vier() + 3

zu

5 + 4 + 3
1
Layla776 
Fragesteller
 16.01.2024, 15:47
@PWolff

DANKE DANKE, dass du dir die Zeit genommen hast, mir das alles so detailliert zu erklären! Hab morgen eine Schularbeit über das Thema und hab jetzt vieeel mehr Hoffnung auf eine gute Note. DANKE und noch einen schönen Tag😆🙏

0