Saya menggunakan JavaScript dan saya membuat variabel global. Saya mendefinisikannya di luar fungsi dan saya ingin mengubah nilai variabel global dari dalam suatu fungsi dan menggunakannya dari fungsi lain, bagaimana saya melakukan ini?
Saya menggunakan JavaScript dan saya membuat variabel global. Saya mendefinisikannya di luar fungsi dan saya ingin mengubah nilai variabel global dari dalam suatu fungsi dan menggunakannya dari fungsi lain, bagaimana saya melakukan ini?
Jawaban:
Referensi saja variabel di dalam fungsi; tidak ada sihir, cukup gunakan namanya. Jika sudah dibuat secara global, maka Anda akan memperbarui variabel global.
Anda bisa mengesampingkan perilaku ini dengan mendeklarasikannya menggunakan lokal var, tetapi jika Anda tidak menggunakannya var, maka nama variabel yang digunakan dalam suatu fungsi akan bersifat global jika variabel itu telah dideklarasikan secara global.
Itu sebabnya dianggap praktik terbaik untuk selalu mendeklarasikan variabel Anda secara eksplisit var. Karena jika Anda melupakannya, Anda dapat mulai mengacaukan global secara tidak sengaja. Itu kesalahan mudah untuk dilakukan. Tetapi dalam kasus Anda, ini berbalik dan menjadi jawaban yang mudah untuk pertanyaan Anda.
console.logini dijalankan segera, tetapi fungsi keberhasilan ajax hanya berjalan di beberapa titik nanti ketika panggilan ajax benar-benar mengembalikan respons. Ini adalah poin mendasar tentang sifat asinkron dari ajax: kode dalam fungsi penutupan tidak berjalan secara berurutan dengan kode di sekitarnya. Ini penting untuk dipahami ketika belajar tentang kode yang digerakkan oleh peristiwa.
var a = 10;
myFunction();
function myFunction(){
a = 20;
}
alert("Value of 'a' outside the function " + a); //outputs 20
Cukup gunakan nama variabel itu.
Dalam JavaScript, variabel hanya bersifat lokal untuk suatu fungsi, jika mereka adalah parameter fungsi atau jika Anda mendeklarasikannya sebagai lokal secara eksplisit dengan mengetikkan varkata kunci di depan nama variabel.
Jika nama nilai lokal memiliki nama yang sama dengan nilai global, gunakan windowobjek
Lihat jsfiddle ini
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
Dengan ES2015, ada dua kata kunci lagi constdan let, yang juga mempengaruhi ruang lingkup variabel ( Spesifikasi Bahasa )
<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>
varkata kunci di dalam fungsi, maka Anda tidak harus berurusan dengandocument.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
Dengan window ['variableName'] atau window.variableName Anda dapat mengubah nilai variabel global di dalam suatu fungsi.