Sto usando JavaScript e creo una variabile globale. Lo definisco al di fuori di una funzione e voglio cambiare il valore della variabile globale dall'interno di una funzione e usarlo da un'altra funzione, come posso fare?
Sto usando JavaScript e creo una variabile globale. Lo definisco al di fuori di una funzione e voglio cambiare il valore della variabile globale dall'interno di una funzione e usarlo da un'altra funzione, come posso fare?
Risposte:
Basta fare riferimento alla variabile all'interno della funzione; nessuna magia, basta usare il suo nome. Se è stato creato a livello globale, aggiornerai la variabile globale.
È possibile ignorare questo comportamento dichiarandolo localmente utilizzando var, ma se non lo si utilizza var, un nome di variabile utilizzato in una funzione sarà globale se tale variabile è stata dichiarata a livello globale.
Ecco perché è considerata la migliore pratica dichiarare sempre esplicitamente le variabili var. Perché se lo dimentichi, puoi iniziare a fare casini con i globi per caso. È un errore facile da fare. Ma nel tuo caso, questo si gira e diventa una risposta facile alla tua domanda.
console.logviene eseguito immediatamente, ma la funzione di successo ajax viene eseguita solo in un momento successivo quando la chiamata ajax restituisce effettivamente una risposta. Questo è un punto fondamentale sulla natura asincrona di ajax: il codice nelle funzioni di chiusura non viene eseguito in sequenza con il codice che lo circonda. Questo è importante da comprendere quando si impara a conoscere il codice guidato dagli eventi.
var a = 10;
myFunction();
function myFunction(){
a = 20;
}
alert("Value of 'a' outside the function " + a); //outputs 20
Usa semplicemente il nome di quella variabile.
In JavaScript, le variabili sono locali solo per una funzione, se sono i parametri della funzione o se le dichiarate come locali esplicitamente digitando la varparola chiave prima del nome della variabile.
Se il nome del valore locale ha lo stesso nome del valore globale, utilizzare l' windowoggetto
Vedi questo jsfiddle
x = 1;
y = 2;
z = 3;
function a(y) {
// y is local to the function, because it is a function parameter
console.log('local y: should be 10:', y); // local y through function parameter
y = 3; // will only overwrite local y, not 'global' y
console.log('local y: should be 3:', y); // local y
// global value could be accessed by referencing through window object
console.log('global y: should be 2:', window.y) // global y, different from local y ()
var x; // makes x a local variable
x = 4; // only overwrites local x
console.log('local x: should be 4:', x); // local x
z = 5; // overwrites global z, because there is no local z
console.log('local z: should be 5:', z); // local z, same as global
console.log('global z: should be 5 5:', window.z, z) // global z, same as z, because z is not local
}
a(10);
console.log('global x: should be 1:', x); // global x
console.log('global y: should be 2:', y); // global y
console.log('global z: should be 5:', z); // global z, overwritten in function a
Con ES2015 sono arrivate altre due parole chiave conste letche influiscono anche sull'ambito di una variabile ( specifica della lingua )
<script>
var x = 2; //X is global and value is 2.
function myFunction()
{
x = 7; //x is local variable and value is 7.
}
myFunction();
alert(x); //x is gobal variable and the value is 7
</script>
varparola chiave all'interno della funzione, quindi non devi occuparti didocument.getElementById("outside").value = x;
var a = 10;
myFunction(a);
function myFunction(a){
window['a'] = 20; // or window.a
}
alert("Value of 'a' outside the function " + a); //outputs 20
Con window ['variabileNome'] o window.variableName è possibile modificare il valore di una variabile globale all'interno di una funzione.