JavaScript: Learn ‘this’ – finding CALL-SITE di una funzione

Questo è il primo articolo di una serie che sto facendo che si concentra sull’apprendimento di ciò chethis è davvero in JS. Per determinare correttamente a cosa si legathis, dovremmo prima capire alcuni concetti di base di cui avremo bisogno quando determineremothis binding in JS e sapere qual è il call-site di una funzione è uno di quei concetti cruciali.

Prima di tuffarsi in CIÒ che il call-site di una funzione è, cerchiamo prima di capire perché abbiamo bisogno di conoscere call-site, in primo luogo. I motivi sono i seguenti:

  1. Probabilmente è qualcosa di molto facile da “sito” in un pezzo di codice. Tuttavia, a volte, alcuni modelli di codifica possono nascondere il vero sito di chiamata. Pertanto, per rimuovere tutte le ambiguità relative a questo argomento, è necessario comprendere call-site (molto chiaramente).
  2. È l’unica cosa che conta se vuoi capire come funzionathis binding.

Detto questo, cerchiamo ora di capire il call-site di una funzione.

Generalmente, il sito di chiamata di una funzione è “il luogo da cui viene chiamata la particolare funzione in un dato pezzo di codice”. Quindi, vai in quella posizione e sai dove si trova il sito di chiamata di quella funzione!

vediamo ora, attraverso il seguente frammento di codice, il luogo dove i call-siti di funzioni sono:

facile! Ma c’è un piccolo problema con questo modo di trovare il sito di chiamata: a volte, può essere difficile individuarlo manualmente (ad esempio: immagina 1000 di righe di codice e devi trovare manualmente il sito di chiamata!).

Questo è dove il call-stack entra in gioco. Che cosa è un call-stack? È una pila (come suggerisce il nome). Di cosa? Di funzioni. Quali funzioni? Di tutte le funzioni che sono state invocate. Per cosa? Per arrivare a dove sei in questo momento nella tua esecuzione (cioè il momento corrente di esecuzione).

Se guardi il tuo call-stack, allora il vero call-site si trova ALL’INTERNO dell’invocazione della funzione PRIMA della funzione che è attualmente in esecuzione.

Ora, facciamo uso di stack di chiamate per trovare il call-siti di funzioni lo stesso codice usato sopra:

QUICK TIP: Piuttosto che calcolare manualmente l’ordine in cui sono state invocate le funzioni (è soggetto a errori e noioso), è necessario utilizzare lo strumento debugger nel browser per vedere lo stack di chiamate. Il debugger si fermerà alla riga in cui hai impostato il punto di interruzione e ti mostrerà lo stack di chiamate, cioè ti mostrerà tutte le funzioni che sono state invocate per portarti in quella posizione nel codice. Quindi, il vero call-site è la seconda funzione dall’alto in questo call-stack (cioè ALL’INTERNO dell’invocazione della funzione PRIMA della funzione che è attualmente in esecuzione).

Quindi, puoi trovare il sito di chiamata di una funzione in 2 modi:

  1. individuando manualmente la posizione in cui la funzione è stata invocata in un dato pezzo di codice, o
  2. guardando lo stack delle chiamate (preferibilmente usando gli strumenti di debugger).

In caso di dubbio (e in generale anche), utilizzare sempre lo stack di chiamate per identificare correttamente il sito di chiamata di una funzione.

Questo è tutto! Questo è tutto quello che dovete sapere per trovare la chiamata-sito di una funzione!

Passi successivi:

Il prossimo articolo di questa serie, JavaScript: Learn ‘this’ – quindi cos’è comunque un COSTRUTTORE?, si concentra sulla comprensione dei costruttori in JS.

Grazie per la lettura. 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.