JavascriptProva

venerdì 17 febbraio 2012

Accessibilità delle variabili

Non ho capito niente!

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