Estoy usando JavaScript y creo una variable global. Lo defino fuera de una función y quiero cambiar el valor de la variable global desde dentro de una función y usarlo desde otra función, ¿cómo hago esto?
Estoy usando JavaScript y creo una variable global. Lo defino fuera de una función y quiero cambiar el valor de la variable global desde dentro de una función y usarlo desde otra función, ¿cómo hago esto?
Respuestas:
Simplemente haga referencia a la variable dentro de la función; sin magia, solo usa su nombre. Si se ha creado globalmente, entonces actualizará la variable global.
Puede anular este comportamiento declarándolo localmente usando var, pero si no lo usa var, el nombre de una variable utilizada en una función será global si esa variable se ha declarado globalmente.
Es por eso que se considera una buena práctica declarar siempre sus variables explícitamente var. Porque si lo olvida, puede comenzar a meterse con los globos por accidente. Es un error fácil de cometer. Pero en su caso, esto cambia y se convierte en una respuesta fácil a su pregunta.
console.logse ejecuta de inmediato, pero la función de éxito ajax solo se ejecuta en algún momento posterior cuando la llamada ajax realmente devuelve una respuesta. Este es un punto fundamental sobre la naturaleza asincrónica de ajax: el código en las funciones de cierre no se ejecuta en secuencia con el código que lo rodea. Es importante comprenderlo cuando se aprende sobre el código controlado por eventos.
var a = 10;
myFunction();
function myFunction(){
a = 20;
}
alert("Value of 'a' outside the function " + a); //outputs 20
Solo usa el nombre de esa variable.
En JavaScript, las variables solo son locales para una función, si son los parámetros de la función o si las declara como locales explícitamente escribiendo la varpalabra clave antes del nombre de la variable.
Si el nombre del valor local tiene el mismo nombre que el valor global, use el windowobjeto
Ver este 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 llegó dos palabras clave consty let, que también afectan el alcance de una variable ( Especificación del lenguaje )
<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>
varpalabra clave dentro de la función, entonces no tiene que lidiar condocument.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 ['variableName'] o window.variableName puede modificar el valor de una variable global dentro de una función.