Noolefunktsioonid on kompaktsemad, kuid kas teadsite, et neil on palju muid erinevusi?

Funktsioonid on JavaScripti oluline osa, mida peate kasutama korduvkasutatava koodi kirjutamiseks. Funktsioonide kaks peamist tüüpi on tavalised ja noolefunktsioonid ning nende defineerimiseks on palju võimalusi.

Kuigi need täidavad sarnaseid vajadusi, on neil mõned kriitilised erinevused, mis võivad oluliselt mõjutada seda, kuidas te neid oma koodis kasutate. Siit saate teada mitmete erinevuste kohta noolefunktsioonide ja tavaliste funktsioonide vahel.

1. Süntaksi erinevused

JavaScripti funktsioonide väljatöötamisel valitud süntaksil on suur mõju sellele, kui lihtne on koodi lugeda ja sellest aru saada. Tavaliste ja noolefunktsioonide süntaks erineb oluliselt, mõjutades nende kirjutamist ja kasutamist.

JavaScripti noolefunktsioonid kasutada väiksemat keelestruktuuri, mis on arusaadavam. Saate neid kasutada funktsioonide loomiseks, ühendades need üheks avaldiseks või lauseks.

konst lisa = (a, b) => a + b;
instagram viewer

Selles näites on lisama funktsioon aktsepteerib kahte sisendit, a ja bja tagastab nende kogusumma. The => märk defineerib selle noolefunktsioonina.

Teisest küljest nõuab tavafunktsiooni määratlemine funktsiooni funktsiooni märksõna üksikasjalikuma süntaksiga, nagu on näidatud selles näites:

funktsioonilisama(a, b) {
tagasi a + b;
}

Selles näites on funktsiooni Märksõna määratleb tavalise funktsiooni, mis kasutab ka lokkis sulgusid ja tagasi avaldus.

Regulaarfunktsioonid on kasulikumad keeruka süntaksi jaoks, mis nõuab mitut avaldust või avaldist. Seevastu noolefunktsioonid kasutavad kokkuvõtlikumat süntaksit, mis muudab teie koodi hõlpsamini loetavaks ja arusaadavaks.

2. Ulatuslikud erinevused

Mõiste "ulatus" kirjeldab, kuidas funktsiooni sisemised muutujad ja funktsioonid on juurdepääsetavad. JavaScriptis määratlete ja pääsete juurde kogu koodi muutujatele ja funktsioonidele, kasutades ulatuse määramist. Nende eristuvad ulatus võib oluliselt mõjutada seda, kuidas te JavaScripti kirjutate ja kasutate nool ja tavalised funktsioonid.

Ulatuse määramisel, kuidas noolefunktsioonid käsitlevad see märksõna erineb oluliselt tavapärastest funktsioonidest. Regulaarsed funktsioonid määratlevad see märksõna ise; seetõttu võib see muutuda sõltuvalt kontekstist, milles funktsiooni käivitate.

Teisest küljest, kuna nad ei täpsusta see märksõna, noolefunktsioonid kasutavad sama see kui neid ümbritsev staatiline ulatus.

Erinevuse nägemiseks vaadake järgmist näidet. Oletame, et teil on a inimene objekt koos a nimi omadus ja meetod nimega ütleNimi() mis logib inimese nime tavalise funktsiooni abil:

konst inimene = {
nimi: "John,"

sayName: funktsiooni() {
konsool.log(see.nimi);
}
};

isik.sayName(); // logib 'John'

Siin on tavaline funktsioon sayName() isikuobjekti ja -meetodi meetod see selle funktsiooni sees olev märksõna viitab sellele isikuobjektile.

Proovime nüüd sama asja noolefunktsiooniga:

konst inimene = {
nimi: "John",

sayName: () => {
konsool.log(see.nimi);
}
};

isik.sayName(); // logib määratlemata

Kuna noolefunktsiooni kasutatakse ütleNimi() meetod ei määratle oma see märksõna, kasutab see see seda ümbritsevast staatilisest ulatusest. Sel juhul on see eksemplari globaalne ulatus.

Selle tulemusena, kui helistate person.sayName(), sa saad määratlemata pigem kui "John." See võib oluliselt mõjutada seda, kuidas te oma koodis funktsioone kirjutate ja kasutate.

3. Kasutusjuhtumid ja parimad tavad

Tavalised funktsioonid sobivad paremini funktsioonide jaoks, mis nõuavad oma funktsioone see märksõna, näiteks meetodid objektis.

Noolefunktsioonid sobivad paremini funktsionaalne programmeerimine ja tagasihelistamised, mis ei nõua see märksõna.

4. Funktsioonide sidumise erinevused

Funktsiooni sidumine on termin, mida kasutatakse seoste kirjeldamiseks see märksõna ja funktsioonid teie koodis. Funktsioonide sidumise erinevused noolefunktsioonide ja tavaliste funktsioonide vahel võivad oluliselt mõjutada noolefunktsioonide konstrueerimist ja kasutamist.

Kasutades see Märksõna muudab selle tavalistes funktsioonides ainulaadseks ja seostub erinevate objektidega funktsiooni kutsumise meetodi alusel. Funktsioonide sidumine on üks olulisemaid erinevusi tavaliste ja noolefunktsioonide vahel.

Seevastu noolefunktsioonidel pole see märksõna; pigem saavad nad seda ümbritsevatest ulatustest.

Selle erinevuse paremaks mõistmiseks vaatame näidet. Oletame, et teil on a inimene objekt koos a nimi välja ja meetod nimega ütleNimi() mis kasutab inimese nime salvestamiseks tavalist funktsiooni:

konst inimene = {
nimi: "John",

sayName: funktsiooni() {
konsool.log(see.nimi);
}
};

konst otherPerson = {
nimi: "Jane"
};

isik.sayName.call (teinePerson); // logib 'Jane'

Selles näites kutsute isiku objektiks ütleNimi() meetod väärtusega Teine inimene kasutades helistama() meetod. Selle tõttu on ütleNimi() meetod, see, märksõna on seotud Teine inimene objekt ja see logib "Jane" pigem kui "John."

Kasutame nüüd sama asja noolefunktsiooniga:

konst inimene = {
nimi: "John",

sayName: () => {
konsool.log(see.nimi);
}
};

konst otherPerson = {
nimi: "Jane"
};

isik.sayName.call (teinePerson); // logib määratlemata

Alates ütleNimi() tehnikal pole oma märksõna, kasutate selles näites selle sees noolefunktsiooni. Sel juhul pärib noolefunktsioon ümbritseva ulatuse, mis on globaalne ulatus, omadused.

See tähendab, et kui jooksed person.sayName.call (teinePerson), noolefunktsioonid see märksõna jääb globaalseks objektiks ja määratlemata võtab asemele Jane logis.

Kui teil on vaja funktsiooni konkreetsega siduda see väärtus, võib eelistada tavalist funktsiooni. Kui te aga ei pea funktsiooni konkreetsega siduma see väärtust, võib noolefunktsioon olla lühem ja hõlpsamini mõistetav.

5. Kaudne tagasitulek

Noolefunktsioonil on kaudne tagastusfunktsioon. Kui funktsiooni keha koosneb ühest avaldisest, tagastavad funktsioonid selle avaldise.

Näiteks:

konst kahekordne = (x) => x * 2;

See noolefunktsioon tagastab parameetrist kahekordse. Te ei pea kasutama selgesõnalist tagasi märksõna, sest funktsiooni kehal on ainult üks avaldis.

6. Ühilduvuse erinevused

Ühilduvuserinevused viitavad ECMAScript 6 lisatud noolefunktsioonidele, mis ei pruugi töötada vanemate brauserite või keskkondadega. Teisest küljest on tavalised funktsioonid olnud JavaScripti algusest peale ja neid toetatakse laialdaselt.

Siin on illustratsioon noolefunktsioonist, mis ei pruugi töötada väljakujunenud tingimustes:

konst lisa = (a, b) => a + b;

Järgmine on võrreldav tavafunktsioon, mis peaks töötama enamikus olukordades:

funktsioonilisama(a, b) {
tagasi a + b;
}

Ühilduvuse tagamiseks kasutage vanemate keskkondade sihtimisel noolefunktsioonide asemel tavalisi funktsioone. Noolefunktsioonid võivad aga pakkuda süntaksit, mis on tänapäevaste brauserite ja keskkondadega töötamisel lihtsamini mõistetav ja tihedam.

JavaScripti noolefunktsioonide ja tavaliste funktsioonide vahel valimine

JavaScriptis on nooltel ja tavalistel funktsioonidel erinevad funktsioonid ja rakendused. Noolefunktsioonidel on lihtne süntaks, pärimine see märksõna termin nende kasutamise kontekstist, samas kui tavalised funktsioonid on paremini kohandatavad ja suudavad lahendada keerulisemaid olukordi.

Oluline on teada, kuidas need erinevad ja kuidas neid vastavalt koodi nõuetele kasutada. Kasutatava funktsiooni valimisel peaksite arvestama ka ühilduvuse erinevustega.

Lõppkokkuvõttes on JavaScripti nool ja tavalised funktsioonid võimsad tööriistad, mis aitavad teil kirjutada puhtamat ja tõhusamat koodi.