Junior
Kuo skiriasi du būdai apibrėžti funkciją?
sobes.tech AI
Atsakymas iš AI
Pagrindinis skirtumas yra this kontekstas.
| Funkcijos apibrėžimo būdas | Skirtumas |
|---|---|
funkcijos deklaracija |
this kontekstas nustatomas pagal tai, kaip funkcija yra iškviečiama. Ji pakeliama prieš kodo vykdymą (hoisting). |
strėlinė funkcija |
this kontekstas paveldimas iš aplinkos (lexical). Nėra pakeliama (be hoisting). |
// funkcijos deklaracija
function įprastaFunkcija() {
console.log(this); // `this` priklauso nuo iškvietimo
}
// strėlinė funkcija
const strėlFunkcija = () => {
console.log(this); // `this` paveldimas iš konteksto, kuriame funkcija apibrėžta
};
Strėlinės funkcijos neturi savo arguments objekto (jis paimamas iš išorinio konteksto) ir negali būti naudojamos kaip konstruktoriai su new operatoriumi.