Mal 'ne Frage

Freitag, 19.11.2021, 08:48 > daMax

Ich hatte euch ja schon erzählt, dass ich gerade einen kleinen JavaScript-Kurs belege. Im Moment stelle ich mir die (ernst gemeinte) Frage, wo genau der Vorteil von function expressions und arrow functions gegenüber normalen function declarations liegt?

//eine normale function declaration
function funktion1() {
  window.alert("Hallo Funktion!");
}

//eine function expression
const funktion2 = function() {
  window.alert("Hallo Funktion2!");
}

//eine arrow function
const funktion3 = (param) => {
  window.alert("Hallo Funktion3: " + param);
}

Mal im Ernst: was ist an funktion1 so schlimm/falsch/unbrauchbar, dass funktion2 besser sein soll? Und wer hier ist der Meinung, dass der Code von funktion3 besser lesbar ist?
Geht es dabei nur um den Scope? Weil ich mit funktion2 und funktion3 jetzt Konstanten habe und angemeckert werden würde, wenn ich versuchte, sie ein zweites Mal zu deklarieren? Oder was ist so geil daran?

Vor allem, wenn ich funktion3 verkürze zu:

const a = (a) => window.alert("Hallo a: " + a);

Das ist doch Bullshit. So richtig schlimm wird es dann ja, wenn Funktionen als Objekte missbraucht werden, die dann auch noch innere Funktionen (also function in function) haben. Ich finde, spätestens da wird der Code ganz schnell komplett unleserlich. Und von Callbacks und der grausamen JSON-Notation fange ich gar nicht an, da kriege ich nur Kopfschmerzen von.