Arrow-Funktion vs. Funktionsdeklaration / -ausdrücke: Sind sie gleichwertig / austauschbar?
Canonical frage Wenn Sie nach dem Ersetzen einer Funktionsdeklaration / eines Funktionsausdrucks durch eine Pfeilfunktion eine Frage zu Problemen haben, schließen Sie diese bitte als Duplikat.
Arrow-Funktionen in ES2015 bieten eine präzisere Syntax. Kann ich jetzt alle meine Funktionsdeklarationen / -ausdrücke durch Pfeilfunktionen ersetzen? Worauf muss ich achten?
Beispiele:
Constructor-Funktion
function User(name) {
this.name = name;
}
// vs
const User = name => {
this.name = name;
};
Prototypmethoden
User.prototype.getName = function() {
return this.name;
};
// vs
User.prototype.getName = () => this.name;
Object (Literal) Methoden
const obj = {
getName: function() {
// ...
}
};
// vs
const obj = {
getName: () => {
// ...
}
};
Rückruf
setTimeout(function() {
// ...
}, 500);
// vs
setTimeout(() => {
// ...
}, 500);
Variadische Funktionen
function sum() {
let args = [].slice.call(arguments);
// ...
}
// vs
const sum = (...args) => {
// ...
};