Funcțiile săgeților sunt mai compacte, dar știați că există o mulțime de alte diferențe pe care le introduc?

Funcțiile sunt o parte esențială a JavaScript pe care trebuie să o utilizați pentru a scrie cod reutilizabil. Cele două tipuri principale de funcții sunt funcțiile obișnuite și săgeți și există multe moduri de a le defini.

Chiar dacă satisfac nevoi similare, au câteva diferențe critice care pot influența fundamental modul în care le utilizați în codul dvs. Aflați totul despre mai multe diferențe dintre funcțiile săgeților și funcțiile obișnuite.

1. Diferențele de sintaxă

Sintaxa pe care o alegeți atunci când dezvoltați funcții JavaScript are un impact mare asupra cât de simplu este să citiți și să înțelegeți codul. Sintaxa funcțiilor obișnuite și a săgeților diferă semnificativ, influențând modul în care le scrieți și le utilizați.

Funcții săgeți JavaScript utilizați o structură de limbaj mai mică, care este mai ușor de înțeles. Le puteți folosi pentru a crea funcții combinându-le într-o singură expresie sau declarație.

instagram viewer
const adauga = (a, b) => a + b;

În acest exemplu, adăuga funcția acceptă două intrări, A și bși returnează totalul acestora. The => semn definește aceasta ca o funcție săgeată.

Pe de altă parte, definirea unei funcții obișnuite necesită utilizarea funcţie cuvânt cheie, cu o sintaxă mai detaliată, așa cum se arată în acest exemplu:

funcţieadăuga(a, b) {
întoarcere a + b;
}

În acest exemplu, funcţie cuvântul cheie definește o funcție obișnuită care folosește și acolade și întoarcere afirmație.

Funcțiile obișnuite sunt mai utile pentru sintaxa complexă care necesită mai multe instrucțiuni sau expresii. În schimb, funcțiile săgeată folosesc o sintaxă mai concisă, care poate face codul mai ușor de citit și de înțeles.

2. Diferențele de acoperire

Termenul „scoping” descrie modul în care variabilele și funcțiile interne ale unei funcții sunt accesibile. În JavaScript, definiți și accesați variabile și funcții prin codul dvs. utilizând domeniul de aplicare. Diferentele lor Scoping poate avea un impact semnificativ asupra modului în care scrieți și utilizați JavaScript săgeată și funcții obișnuite.

În scoping, modul în care funcțiile săgeată gestionează acest cuvântul cheie diferă semnificativ de modul în care funcționează funcțiile normale. Funcțiile obișnuite definesc acest cuvintele cheie înșiși; prin urmare, se poate schimba în funcție de contextul în care invocați funcția.

Pe de altă parte, pentru că nu specifică acest cuvintele cheie, funcțiile săgeată folosesc același lucru acest ca sfera statică care le înconjoară.

Pentru a vedea diferența, consultați următorul exemplu. Să presupunem că ai un persoană obiect cu a Nume proprietate și o metodă numită spuneNume() care înregistrează numele persoanei folosind o funcție obișnuită:

const persoana = {
Nume: 'Ioan,'

spuneNume: funcţie() {
consolă.Buturuga(acest.Nume);
}
};

person.sayName(); // înregistrează „John”

Aici, funcția obișnuită sayName() este o metodă a obiectului persoană și a acest cuvântul cheie din acea funcție se referă la acel obiect persoană.

Să încercăm acum același lucru cu o funcție săgeată:

const persoana = {
Nume: 'Ioan',

spuneNume: () => {
consolă.Buturuga(acest.Nume);
}
};

person.sayName(); // jurnal nedefinit

Deoarece funcția săgeată utilizată în spuneNume() metoda nu își definește propria acest cuvântul cheie, folosește acest a domeniului static care o înconjoară. În acest caz, acesta este domeniul global al instanței.

Drept urmare, când suni person.sayName(), primesti nedefinit Mai degrabă decât "Ioan." Acest lucru poate avea un impact semnificativ asupra modului în care scrieți și utilizați funcțiile din cod.

3. Cazuri de utilizare și cele mai bune practici

Funcțiile obișnuite sunt mai potrivite pentru funcțiile care necesită propriile funcții acest cuvânt cheie, cum ar fi metodele dintr-un obiect.

Funcțiile săgeată sunt mai potrivite pentru programare functionala și apeluri inverse care nu necesită acest cuvânt cheie.

4. Diferențele de legare a funcției

Legarea funcției este termenul folosit pentru a descrie relația dintre acest cuvinte cheie și funcții din codul dvs. Variațiile în legarea funcțiilor dintre funcțiile săgeată și funcțiile normale pot avea un impact puternic asupra modului în care construiți și utilizați funcțiile săgeată.

Folosind acest cuvântul cheie îl face unic în funcțiile obișnuite și se asociază cu diverse obiecte pe baza metodei utilizate pentru a apela funcția. Legarea funcției este una dintre cele mai importante distincții între funcțiile obișnuite și săgeți.

În schimb, funcțiile săgeată nu au acest cuvânt cheie; mai degrabă, ei îl obțin din ambalajele din jur.

Să ne uităm la un exemplu pentru a înțelege mai multe despre această diferență. Să presupunem că aveți o persoană obiect cu a Nume câmp și o metodă numită spuneNume() care utilizează o funcție obișnuită pentru a înregistra numele persoanei:

const persoana = {
Nume: 'Ioan',

spuneNume: funcţie() {
consolă.Buturuga(acest.Nume);
}
};

const anotherPerson = {
Nume: „Jane”
};

persoană.spuneNume.apel (o altă persoană); // înregistrează „Jane”

În acest exemplu, numiți obiectul persoanei spuneNume() metoda cu valoarea alta persoana folosind apel() metodă. Din această cauză, cel spuneNume() metodă, acest, cuvântul cheie este legat de alta persoana obiect și înregistrează "Jane" Mai degrabă decât "Ioan."

Să folosim acum același lucru cu o funcție săgeată:

const persoana = {
Nume: 'Ioan',

spuneNume: () => {
consolă.Buturuga(acest.Nume);
}
};

const anotherPerson = {
Nume: „Jane”
};

persoană.spuneNume.apel (o altă persoană); // jurnal nedefinit

De când spuneNume() tehnica nu are propriul cuvânt cheie, utilizați o funcție săgeată în cadrul acesteia în acest exemplu. În acest caz, funcția săgeată moștenește proprietățile domeniului înconjurător, care este domeniul global.

Asta înseamnă că atunci când alergi person.sayName.call (otherPerson), funcția săgeată acest cuvântul cheie rămâne obiectul global și nedefinit ia locul de Jane în jurnal.

Dacă trebuie să legați o funcție la un anumit acest valoare, o funcție obișnuită poate fi de preferat. Cu toate acestea, dacă nu trebuie să legați o funcție la un anumit acest valoare, o funcție săgeată ar putea fi mai scurtă și mai ușor de înțeles.

5. Întoarcere implicită

Funcția săgeată are o caracteristică de returnare implicită. Dacă corpul funcției constă dintr-o singură expresie, funcțiile returnează acea expresie.

Ca exemplu:

const dublu = (X) => X * 2;

Această funcție săgeată returnează un dublu dintr-un parametru. Nu trebuie să utilizați un explicit întoarcere cuvânt cheie deoarece corpul funcției are o singură expresie.

6. Diferențe de compatibilitate

Diferențele de compatibilitate se referă la funcțiile de săgeți adăugate ECMAScript 6, care este posibil să nu funcționeze cu browsere sau medii mai vechi. Pe de altă parte, funcțiile obișnuite există încă de la începutul JavaScript și sunt acceptate pe scară largă.

Iată o ilustrare a unei săgeți care poate să nu funcționeze în condiții mai stabilite:

const adauga = (a, b) => a + b;

Următoarea este o funcție obișnuită comparabilă care ar trebui să funcționeze în majoritatea situațiilor:

funcţieadăuga(a, b) {
întoarcere a + b;
}

Utilizați funcții obișnuite în loc de săgeți atunci când vizați medii mai vechi pentru a asigura compatibilitatea. Cu toate acestea, funcțiile săgeată pot oferi o sintaxă care este mai ușor de înțeles și mai condensată atunci când lucrați cu browsere și medii moderne.

Alegerea dintre funcțiile săgeată și funcțiile obișnuite în JavaScript

În JavaScript, săgețile și funcțiile obișnuite au caracteristici și aplicații distincte. Funcțiile săgeată au o sintaxă simplă, moștenind acest termenul de cuvinte cheie din contextul utilizării lor, în timp ce funcțiile obișnuite sunt mai adaptabile și pot face față unor situații mai complexe.

Este esențial să știți cum diferă și cum să le folosiți conform cerințelor codului dvs. Atunci când selectați ce fel de funcție să utilizați, ar trebui să luați în considerare și diferențele de compatibilitate.

În cele din urmă, săgeata JavaScript și funcțiile obișnuite sunt instrumente puternice care vă ajută să scrieți cod mai curat și mai eficient.