Cos'è lo scope



Una traduzione di scope potrebbe essere quella di contesto di esecuzione all'interno del quale una particolare funzione JavaScript viene eseguita. Questo è un concetto abbastanza nuovo per chi proviene da qualche altro linguaggio di programmazione: nei linguaggi funzionali non ha senso parlare di contesto di esecuzione in quanto le diverse funzioni risiedono nello stesso grande contenitore globale, mentre nei linguaggi orientati agli oggetti, nonostante esista un ambiente all'interno del quale ciascun metodo viene invocato, esso non può essere in qualche modo gestito in quanto è sempre rappresentato dall'oggetto stesso sul quale il metodo viene chiamato.

In JavaScript qualsiasi funzione ha uno scope che può essere referenziato tramite la keyword this. Questo costrutto interno al linguaggio serve appunto per fare riferimento al macro-oggetto all'interno del quale il metodo viene eseguito. Se una determinata funzione non presenta uno scope preciso, essa verrà invocata all'interno del oggetto globale window, che, come sappiamo, è uno degli oggetti impliciti del motore di interpretazione di JavaScript quando viene eseguito all'interno di un browser e che rappresenta la finestra aperta dall'utente.

Vediamo subito un esempio:

<script type="text/javascript">

var funzioneGlobale = function() {
  alert(this); // oggetto implicito window
}

var container = {
  funzioneLocale: function() {
    alert(this); //oggetto container
  }
}

funzioneGlobale();
container.funzioneLocale();

</script> 

Abbiamo creato due funzioni, una globale e una definita come membro di un oggetto. Nonostante il contenuto della funzione sia lo stesso, l'esito non sarà tale. Infatti funzioneGlobale() viene eseguita all'interno dell'oggetto window mentre funzioneLocale() all'interno del nostro oggetto container. Per questo motivo lo scope tra le due funzioni sarà diverso. Fin qua sembra tutto facile. È tempo di fare un passo avanti.

Ultimi articoli JavaScript

PhantomJS, headless browser per test con Javascript

Il tool ideale per realizzare, da terminale, operazioni in remoto su...

Creare e leggere QR Code in JavaScript

Applicazioni 'QR Code enabled' per il Web e per il mobile,...

Jquery UI Map: web-mapping con Google Maps e jQuery

Un plugin di jQuery UI per intefacciare applicaizoni Web/mobile con...

Scrollorama e Scrolldeck, slideshow d'effetto con jQuery

Plugin jQuery per ottenere Slideshow con diversi effetti di scrolling

jCanvas, un primo semplice grafico

Alla scoperta della libreria jCanvas, per semplificare il disegno e...

Altri articoli

Guide JavaScript

Guida Node.js

Il framework che permette di per usare V8, l'interprete JavaScript...

Canvas, guida ai framework

Canvas, tra gli elementi di HTML5 è forse quello di maggior impatto....

Guida Javascript: tecniche avanzate

Una guida dal taglio pratico per approfondire la programmazione a...

Altre guide

Newsletter @JavaScript

Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Webmaster base

18 Giugno 2012 a Milano
Disponibilità: 6 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso JQuery e Ajax per Webmaster

03 Luglio 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti

Corso Webmaster base

11 Giugno 2012 a Roma
Disponibilità: 7 Posti