Junior
Mis vahe on klassikalise funktsiooni ja noolefunktsiooni vahel JavaScriptis?
sobes.tech AI
Vastus AI-lt
Peamine erinevus seisneb selles, kuidas nad töötavad this-ga.
Klassikaline funktsioon omab oma this, mis määratakse selle kutsumise konteksti järgi (kuidas see kutsuti).
Noolefunktsioonil ei ole oma this. See pärib leksikaalselt this sellest keskkonnast, kus see määratleti.
Teised erinevused:
argumentsobjekt: Klassikalistel funktsioonidel on juurdepääsarguments-le, noolefunktsioonidel — ei (aga saab kasutada rest-parameetreid).- Konstruktorid: Klassikalisi funktsioone saab kasutada konstruktoritena koos
new-ga. Noolefunktsioonid — ei. prototypeomadus: Klassikalistel funktsioonidel onprototype. Noolefunktsioonidel — ei.
Näide this-ga töötamisest:
// Näide klassikalise funktsiooniga
const obj = {
name: 'Objekt',
greet: function() {
console.log(this.name); // this viitab obj-ile
}
};
obj.greet(); // Väljund: Objekt
const greetFunc = obj.greet;
greetFunc(); // Väljund: undefined (või Window brauseris) - this kaotab konteksti
// Näide noolefunktsiooniga
const objArrow = {
name: 'Noolega objekt',
greet: () => {
console.log(this.name); // this pärib välisest kontekstist (antud juhul global või Window)
}
};
objArrow.greet(); // Väljund: undefined (või Window nimi brauseris, kui see on määratletud)
const greetArrowFunc = objArrow.greet;
greetArrowFunc(); // Väljund: undefined (või Window nimi) - this ei muutu