Junior
Qual è la differenza tra due modi di definire una funzione?
sobes.tech AI
Risposta dell'AI
La principale differenza riguarda il contesto di this.
| Metodo di definizione della funzione | Differenza |
|---|---|
dichiarazione di funzione |
Il contesto this è determinato da come viene chiamata la funzione. Viene sollevato prima dell'esecuzione del codice (hoisting). |
funzione freccia |
Il contesto this eredita da quello circostante (lexical). Non viene sollevato (no hoisting). |
// dichiarazione di funzione
function funzioneRegolare() {
console.log(this); // `this` dipende dalla chiamata
}
// funzione freccia
const funzioneFleccia = () => {
console.log(this); // `this` eredita dal contesto in cui è definita la funzione
};
Le funzioni freccia non hanno anche il loro oggetto arguments (viene preso dal contesto esterno) e non possono essere usate come costruttori con l'operatore new.