Non è molto facile, perlomeno per me adesso, capire bene il gioco della visibilità delle variabili, dello scope e tutto ciò che vi è connesso.
Di tutto quello che ho detto finora in proposito, gran parte, o forse tutto, non è vero.
Procediamo...
Dichiaro tre variabili nell'ambito di una funzione, quindi do il comando di mostrare l'una o l'altra:
<script> function funzione(){ variabileNoVar="variabile senza var"; var variabileVar="variabile con var"; this.variabileThis="variabile con this" } alert(variabileNoVar); </script>
<script> function funzione(){ variabileNoVar="variabile senza var"; var variabileVar="variabile con var"; this.variabileThis="variabile con this" } alert(variabileVar); </script>
<script> function funzione(){ variabileNoVar="variabile senza var"; var variabileVar="variabile con var"; this.variabileThis="variabile con this" } alert(variabileThis); </script>
Bene. In nessun caso di questi ottengo nulla.
Il motivo per cui non ottengo nulla è che non è stata chiamata la funzione nell'ambito della quale vengono dichiarate le variabili.
Allora riscrivo il codice, chiamando la funzione:
<script> function funzione(){ variabileNoVar="variabile senza var"; var variabileVar="variabile con var"; this.variabileThis="variabile con this" } funzione(); alert(variabileNoVar); </script>
variabile senza var
<script> function funzione(){ variabileNoVar="variabile senza var"; var variabileVar="variabile con var"; this.variabileThis="variabile con this" } funzione(); alert(variabileVar); </script>
<script> function funzione(){ variabileNoVar="variabile senza var"; var variabileVar="variabile con var"; this.variabileThis="variabile con this" } funzione(); alert(variabileThis); </script>
variabile con this
Bene.
Queste variabili non esistono finchè non è stata chiamata la funzione. E' la chiamata della funzione a crearle.
Ciononostante, la variabile locale dichiarata con var non è accessibile dall'ambiente window dal quale sto chiamando le variabili. Le altre lo sono.
Ecco un minimo di chiarezza.
Nessun commento:
Posta un commento