J'utilise JavaScript et je crée une variable globale. Je le définis en dehors d'une fonction et je souhaite modifier la valeur de la variable globale depuis l'intérieur d'une fonction et l'utiliser à partir d'une autre fonction, comment faire?
J'utilise JavaScript et je crée une variable globale. Je le définis en dehors d'une fonction et je souhaite modifier la valeur de la variable globale depuis l'intérieur d'une fonction et l'utiliser à partir d'une autre fonction, comment faire?
Réponses:
Faites simplement référence à la variable à l'intérieur de la fonction; pas de magie, utilisez simplement son nom. S'il a été créé globalement, vous mettrez à jour la variable globale.
Vous pouvez remplacer ce comportement en le déclarant localement en utilisant var, mais si vous ne l'utilisez pas var, alors un nom de variable utilisé dans une fonction sera global si cette variable a été déclarée globalement.
C'est pourquoi il est recommandé de toujours déclarer vos variables explicitement avec var. Parce que si vous l'oubliez, vous pouvez commencer à jouer avec les globaux par accident. C'est une erreur facile à faire. Mais dans votre cas, cela se retourne et devient une réponse facile à votre question.
console.logest exécuté immédiatement, mais la fonction de succès ajax ne s'exécute qu'à un moment donné plus tard, lorsque l'appel ajax renvoie réellement une réponse. C'est un point fondamental sur la nature asynchrone d'ajax: le code dans les fonctions de fermeture ne s'exécute pas en séquence avec le code qui l'entoure. C'est un élément important à comprendre lors de l'apprentissage du code événementiel.
var a = 10;
myFunction();
function myFunction(){
a = 20;
}
alert("Value of 'a' outside the function " + a); //outputs 20
Utilisez simplement le nom de cette variable.
En JavaScript, les variables ne sont locales que pour une fonction, si ce sont les paramètres de la fonction ou si vous les déclarez explicitement comme locales en tapant le varmot - clé avant le nom de la variable.
Si le nom de la valeur locale a le même nom que la valeur globale, utilisez l' windowobjet
Voir ce 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
Avec ES2015, il y avait deux autres mots const- clés et let, qui affectent également la portée d'une variable ( spécification de la langue )
<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>
varmot - clé à l'intérieur de la fonction, vous n'avez pas à vous en occuperdocument.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
Avec window ['variableName'] ou window.variableName vous pouvez modifier la valeur d'une variable globale à l'intérieur d'une fonction.