Rodyklės funkcijos yra kompaktiškesnės, bet ar žinojote, kad jos turi daugybę kitų skirtumų?
Funkcijos yra esminė JavaScript dalis, kurią reikia naudoti norint rašyti daugkartinį kodą. Du pagrindiniai funkcijų tipai yra įprastos ir rodyklės funkcijos, ir yra daug būdų jas apibrėžti.
Nors jie tenkina panašius poreikius, jie turi keletą esminių skirtumų, kurie gali iš esmės paveikti jų naudojimą savo kode. Sužinokite viską apie kelis skirtumus tarp rodyklių ir įprastų funkcijų.
1. Sintaksės skirtumai
Sintaksė, kurią pasirenkate kurdami „JavaScript“ funkcijas, turi didelę įtaką tam, kaip paprasta skaityti ir suprasti kodą. Įprastų ir rodyklių funkcijų sintaksė labai skiriasi ir turi įtakos jų rašymui ir naudojimui.
JavaScript rodyklės funkcijos naudoti mažesnę kalbos struktūrą, kuri yra suprantamesnė. Galite naudoti juos funkcijoms kurti, sujungdami jas į vieną išraišką ar teiginį.
konst pridėti = (a, b) => a + b;
Šiame pavyzdyje papildyti funkcija priima du įėjimus, a ir b, ir grąžina jų bendrą sumą. The => ženklas apibrėžia tai kaip rodyklės funkciją.
Kita vertus, norint apibrėžti įprastą funkciją, reikia naudoti funkcija raktinis žodis su konkretesne sintaksė, kaip parodyta šiame pavyzdyje:
funkcijapapildyti(a, b) {
grąžinti a + b;
}
Šiame pavyzdyje funkcija raktinis žodis apibrėžia įprastą funkciją, kuri taip pat naudoja garbanotas petnešas ir grąžinti pareiškimas.
Įprastos funkcijos yra naudingesnės sudėtingai sintaksei, kuriai reikia kelių teiginių ar išraiškų. Priešingai, rodyklės funkcijos naudoja glaustesnę sintaksę, kuri gali palengvinti kodo skaitymą ir supratimą.
2. Apimties skirtumai
Terminas „apimtis“ apibūdina, kaip pasiekiami funkcijos vidiniai kintamieji ir funkcijos. Naudodami „JavaScript“ apibrėžiate ir pasiekiate kintamuosius ir funkcijas visame kode, naudodami taikymo sritį. Jų išskirtinis apimtis gali turėti didelės įtakos tam, kaip rašote ir naudojate „JavaScript“. rodyklė ir reguliarios funkcijos.
Apibrėžiant apimtį, kaip rodyklės funkcijos apdoroja tai raktinis žodis labai skiriasi nuo įprastų funkcijų. Įprastos funkcijos apibrėžia tai patys raktažodžiai; todėl jis gali keistis priklausomai nuo konteksto, kuriame iškviečiate funkciją.
Kita vertus, nes jie nenurodo tai raktinis žodis, rodyklės funkcijos naudoja tą patį tai kaip juos supanti statinė apimtis.
Norėdami pamatyti skirtumą, peržiūrėkite šį pavyzdį. Tarkime, kad turite a asmuo objektas su a vardas savybė ir metodas, vadinamas pasakytiVardas() kuri registruoja asmens vardą naudodama įprastą funkciją:
konst asmuo = {
vardas: 'Jonas'sayName: funkcija() {
konsolė.log(tai.vardas);
}
};
asmuo.sayName(); // registruoja "Jonas"
Čia įprasta funkcija sayName() yra asmens objekto ir objekto metodas tai raktinis žodis toje funkcijoje nurodo to asmens objektą.
Dabar pabandykime tą patį su rodyklės funkcija:
konst asmuo = {
vardas: "Jonas",sayName: () => {
konsolė.log(tai.vardas);
}
};
asmuo.sayName(); // žurnalai neapibrėžti
Kadangi rodyklės funkcija naudojama pasakytiVardas() metodas neapibrėžia savo tai raktinį žodį, jis naudoja tai jį supančios statinės apimties. Šiuo atveju tai yra pasaulinė egzemplioriaus apimtis.
Dėl to, kai skambinate asmuo.sayName(), tu gauni neapibrėžtas geriau nei — Jonas. Tai gali labai paveikti tai, kaip rašote ir naudojate funkcijas kode.
3. Naudojimo atvejai ir geriausia praktika
Įprastos funkcijos labiau tinka funkcijoms, kurioms reikia savo tai raktinį žodį, pvz., metodus objekte.
Rodyklės funkcijos labiau tinka funkcinis programavimas ir atgaliniai skambučiai, kurių nereikia tai raktažodį.
4. Funkcijų įrišimo skirtumai
Funkcijų susiejimas yra terminas, naudojamas apibūdinti ryšį tarp tai raktinį žodį ir funkcijas savo kode. Rodyklės funkcijų ir įprastų funkcijų susiejimo skirtumai gali labai paveikti rodyklių funkcijų kūrimą ir naudojimą.
Naudojant tai raktinis žodis daro jį unikaliu įprastose funkcijose ir susieja su įvairiais objektais pagal metodą, naudojamą funkcijai iškviesti. Funkcijų susiejimas yra vienas iš svarbiausių skirtumų tarp įprastų ir rodyklių funkcijų.
Priešingai, rodyklės funkcijos neturi tai raktažodis; veikiau jie tai gauna iš aplinkinių sferų.
Pažvelkime į pavyzdį, kad geriau suprastume šį skirtumą. Tarkime, kad turite a asmuo objektas su a vardas lauką ir metodą, vadinamą pasakytiVardas() kuri naudoja įprastą funkciją asmens vardui įrašyti:
konst asmuo = {
vardas: "Jonas",sayName: funkcija() {
konsolė.log(tai.vardas);
}
};konst otherPerson = {
vardas: 'Jane'
};
asmuo.sayName.call (kitas asmuo); // žurnalai "Jane"
Šiame pavyzdyje jūs vadinate asmens objektu pasakytiVardas() metodas su verte Kitas žmogus naudojant skambinti () metodas. Dėl to, pasakytiVardas() metodas, tai, raktinis žodis susietas su Kitas žmogus objektas ir jis registruojasi "Džeinė" geriau nei "Jonas."
Dabar naudokime tą patį su rodyklės funkcija:
konst asmuo = {
vardas: "Jonas",sayName: () => {
konsolė.log(tai.vardas);
}
};konst otherPerson = {
vardas: 'Jane'
};
asmuo.sayName.call (kitas asmuo); // žurnalai neapibrėžti
Nuo pat pasakytiVardas() technika neturi savo raktinio žodžio, šiame pavyzdyje naudojate rodyklės funkciją. Šiuo atveju rodyklės funkcija paveldi supančios apimties, kuri yra pasaulinė apimtis, savybes.
Tai reiškia, kad kai bėgate asmuo.sayName.call (kitas asmuo), rodyklės funkcija tai raktinis žodis išlieka pasauliniu objektu ir neapibrėžtas užima vietą Džeinė žurnale.
Jei reikia susieti funkciją su konkrečia tai reikšmę, gali būti pageidautina įprasta funkcija. Tačiau jei jums nereikia susieti funkcijos su konkrečia tai rodyklės funkcija gali būti trumpesnė ir lengviau suprantama.
5. Netiesioginis grąžinimas
Rodyklės funkcija turi numanomą grąžinimo funkciją. Jei funkcijos kūną sudaro viena išraiška, funkcijos grąžina tą išraišką.
Pavyzdžiui:
konst dvigubas = (x) => x * 2;
Ši rodyklės funkcija grąžina parametro dublį. Nereikia naudoti aiškaus žodžio grąžinti raktinis žodis, nes funkcijos turinys turi tik vieną išraišką.
6. Suderinamumo skirtumai
Suderinamumo skirtumai susiję su ECMAScript 6 pridėtomis rodyklių funkcijomis, kurios gali neveikti senesnėse naršyklėse ar aplinkoje. Kita vertus, įprastos funkcijos egzistuoja nuo JavaScript pradžios ir yra plačiai palaikomos.
Čia yra rodyklės funkcijos, kuri gali neveikti labiau nustatytomis sąlygomis, iliustracija:
konst pridėti = (a, b) => a + b;
Toliau pateikiama panaši įprasta funkcija, kuri turėtų veikti daugeliu atvejų:
funkcijapapildyti(a, b) {
grąžinti a + b;
}
Norėdami užtikrinti suderinamumą, taikydami į senesnę aplinką naudokite įprastas funkcijas, o ne rodyklių funkcijas. Tačiau rodyklių funkcijos gali pateikti sintaksę, kuri yra lengviau suprantama ir sutrumpinta dirbant su šiuolaikinėmis naršyklėmis ir aplinkomis.
Pasirinkimas tarp rodyklės funkcijų ir įprastų funkcijų „JavaScript“.
„JavaScript“ rodyklės ir įprastos funkcijos turi skirtingas funkcijas ir programas. Rodyklės funkcijos turi paprastą sintaksę, paveldimą tai raktinio žodžio terminą iš jų naudojimo konteksto, o įprastos funkcijos yra labiau pritaikomos ir gali susidoroti su sudėtingesnėmis situacijomis.
Labai svarbu žinoti, kuo jie skiriasi ir kaip juos naudoti pagal kodo reikalavimus. Pasirinkdami, kokią funkciją naudoti, taip pat turėtumėte atsižvelgti į suderinamumo skirtumus.
Galiausiai „JavaScript“ rodyklė ir įprastos funkcijos yra galingi įrankiai, padedantys rašyti švaresnį ir efektyvesnį kodą.