Una delle più grandi parole d’ordine nel linguaggio JavaScript è chiusura. è oggetto di molte domande sui colloqui di lavoro presso le aziende FAANG. In questo articolo parleremo di chiusura e scopo, ne illustreremo i concetti con semplici esempi e poi concluderemo con una domanda campione tratta da un’intervista con uno dei più grandi giganti della tecnologia.
Quando qualcuno ti dice che qualcosa rientra o non rientra nell’ambito di un progetto, cosa significa?
Mi piacerebbe pensare a un periscopio o un telescopio quando penso alla risposta a questo. Questi strumenti ci mostrano ogni sorta di cose all’interno dei confini dell’obiettivo che ha: è nell’ambito. Se non rientra nell’ambito, non puoi vedere oltre il diametro dell’obiettivo. E illuminare qualcosa al di fuori del diametro non è possibile. Dovresti pensare a questo mentre parliamo di tre tipi di ambito molto importanti e distinti in JavaScript: locale, globale e lessicale.
Ambito locale
L’ambito locale è il più piccolo dei tre ambiti di cui parleremo oggi. Quando dichiariamo una funzione, qualsiasi cosa all’interno delle parentesi quadre ({}) è considerata locale alla funzione. Quando il motore JavaScript legge la funzione dichiarerà le variabili; quando termina distruggerà le variabili.
Come puoi vedere, quando "console.log()" l’esito della funzione di saluto invocata, siamo in grado di accedere al websiteName dopo che la funzione è stata eseguita. Questo ci dà il ‚ÄòHello Python.Engineering‚Äô stringa che stavamo cercando. Il console.log()
della variabile che è stata dichiarata all’interno della funzione genera un errore perché non è definito.
Come già accennato, il motivo per cui websiteName non è definito è perché le variabili vengono create all’interno delle funzioni quando vengono invocate e quindi distrutte quando viene eseguita l’istruzione terminale. Qualsiasi cosa al di fuori della funzione non ha accesso a cose all’interno della funzione a meno che non abbia una configurazione speciale.
Ambito globale
Questo prossimo ambito è praticamente una traduzione letterale della frase. Un ambito globale prende gli elementi dichiarati al di fuori di una funzione e li riserva in uno spazio in cui tutti gli script, i metodi e le funzioni possono accedervi e utilizzarli per la loro logica.
Cosa fa il codice sopra se console.log()
il contatore alla fine del codice? Cosa ti aspetti che accada?