Sobes.tech
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.