Seria Tech Jargon

Probabil că știți deja cum să scrieți funcții în ambele moduri. function doStuff() {} și () => {} sunt caractere pe care le tastăm toată ziua. Dar în ce fel sunt ele diferite și de ce să le folosim una peste alta?

Notă: Exemple sunt date în JavaScript. Daal nostru Mileage MAy Vary cu alte limbi.

Cand se foloseste o declaratie de functie vs o

Prima diferență: un nume

Când creați o funcție cu un Nume, acesta este un declarația funcției. Numele poate fi omis în expresii funcționale, făcând această funcție „anonimă”.

Declarație de funcție:

function doStuff() {};

Expresia funcției:

ad-banner
const doStuff = function() {}

Adesea vedem funcții anonime folosite cu sintaxa ES6 astfel:

const doStuff = () => {}

Ridicarea

Ridicarea se referă la disponibilitatea funcțiilor și variabilelor „în partea de sus” a codului dvs., spre deosebire de numai după ce acestea sunt create. Obiectele sunt inițializate la compilare și sunt disponibile oriunde în fișierul dvs.

Declarațiile de funcții sunt ridicate, dar expresiile de funcții nu.

Este ușor de înțeles cu un exemplu:

doStuff();
function doStuff() {};

Cele de mai sus nu aruncă o eroare, dar acest lucru ar:

doStuff();
const doStuff = () => {};

Cazul pentru expresii funcționale

S-ar putea părea că declarațiile de funcții, cu proprietățile lor puternice de ridicare, vor elimina expresiile funcției pentru utilitate. Alegerea uneia peste cealaltă necesită gândirea când și unde este necesară funcția. Practic, cine trebuie să știe despre asta?

Expresiile funcției sunt invocate la evita poluarea domeniului global. În loc ca programul dvs. să fie conștient de multe funcții diferite, atunci când le păstrați anonime, acestea sunt utilizate și uitate imediat.

IIFE

Numele – au invocat imediat expresii funcționale – destul de mult spune totul aici. Când o funcție este creată în același timp, este apelată, puteți utiliza un IIFE, care arată astfel:

(function() => {})()

sau:

(() => {})()

Pentru o privire aprofundată asupra IIFE-urilor, verificați acest articol cuprinzător.

Rambursări

O funcție transmisă unei alte funcții este adesea denumită „callback” în JavaScript. Iată un exemplu:

function mapAction(item) {
  // do stuff to an item
}
array.map(mapAction)
array.map(mapAction)

Problema aici este că mapAction va fi disponibil pentru întreaga aplicație – nu este nevoie de asta. Dacă acel apel invers este o expresie de funcție, nu va fi disponibil în afara funcției care o folosește:

array.map(item => { //do stuff to an item })

sau

const mapAction = function(item) {
  // do stuff to an item
}
array.map(mapAction)
array.map(mapAction)

deşi mapAction va fi disponibil pentru cod de mai jos inițializarea acestuia.

rezumat

Pe scurt, utilizați declarații de funcții atunci când doriți să creați o funcție pe domeniul global și să o faceți disponibilă în întregul cod. Utilizați expresii de funcții pentru a limita locul în care funcția este disponibilă, pentru a menține lumina scopului global ușor și pentru a menține sintaxa curată.

Referințe

Seria Tech Jargon

Există atât de multe fraze care sunt aruncate în jurul întâlnirilor și conferințelor tehnice, presupunând că toată lumea este deja cu lingo-ul. De multe ori nu sunt în jos cu lingoul. Este obișnuit ca dezvoltatorii să se uimească că îmi lipsește o bucată de cunoștințe.

Adevărul este că de multe ori nu știu cuvântul potrivit. În calitate de oameni, dar mai ales de oameni dezvoltatori, ne place să-i respingem pe cei care nu „vorbesc”, așa că această serie este despre obținerea unei înțelegeri solide a conceptelor de programare pe care cineva „ar trebui să le cunoască”.

Acesta este al doilea articol din serie. Primul a fost funcții de ordin superior. Căutați mai multe în timp ce merg la întâlniri și conferințe și mă prefac că știu despre ce vorbesc colegii mei tehnici, dar apoi trebuie să plec acasă și să-l Google.