Я використовую 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
За допомогою вікна [' variaName '] або window.variableName ви можете змінювати значення глобальної змінної всередині функції.