Я использую JavaScript и создаю глобальную переменную. Я определяю его вне функции, и я хочу изменить значение глобальной переменной изнутри функции и использовать его из другой функции, как мне это сделать?
Я использую JavaScript и создаю глобальную переменную. Я определяю его вне функции, и я хочу изменить значение глобальной переменной изнутри функции и использовать его из другой функции, как мне это сделать?
Ответы:
Просто укажите переменную внутри функции; никакой магии, просто используйте это имя. Если он был создан глобально, вы обновите глобальную переменную.
Вы можете переопределить это поведение, объявив его локально с помощью var, но если вы не используете var, то имя переменной, используемое в функции, будет глобальным, если эта переменная была объявлена глобально.
Вот почему рекомендуется всегда явно объявлять переменные с помощью var. Потому что, если вы его забудете, вы можете случайно начать возиться с глобальными объектами. Это легко сделать. Но в вашем случае это обернется и станет легким ответом на ваш вопрос.
console.logон запускается немедленно, но функция успеха ajax запускается только в какой-то момент позже, когда вызов ajax фактически возвращает ответ. Это фундаментальный момент об асинхронной природе ajax: код в функциях закрытия не выполняется последовательно с кодом вокруг него. Это важно понимать при изучении кода, управляемого событиями.
var a = 10;
myFunction();
function myFunction(){
a = 20;
}
alert("Value of 'a' outside the function " + a); //outputs 20
Просто используйте имя этой переменной.
В JavaScript переменные являются локальными для функции только в том случае, если они являются параметром (-ами) функции или если вы явно объявляете их как локальные, вводя varключевое слово перед именем переменной.
Если имя локального значения совпадает с именем глобального значения, используйте windowобъект
См. Этот 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
В ES2015 появилось еще два ключевых слова constи let, которые также влияют на объем переменной ( спецификация языка )
<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>
varключевое слово внутри функции, то вам не придется иметь дело сdocument.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
С помощью window ['variableName'] или window.variableName вы можете изменить значение глобальной переменной внутри функции.