Pembolehubah Global dalam Fungsi di JavaScript
Dalam JavaScript (dalam bahasa lain selalunya tidak begitu) pembolehubah yang ditakrifkan di luar fungsi, akan kelihatan di dalam fungsi tersebut. Pembolehubah sedemikian dipanggil pembolehubah global. Mari lihat contoh:
let num = 1; // pembolehubah di luar fungsi
function func() {
console.log(num); // pembolehubah num kelihatan di dalam fungsi
}
func(); // akan output 1
Sebenarnya, pembolehubah itu harus ditakrifkan bukan sebelum takrifan fungsi, tetapi sebelum ia dipanggil:
function func() {
console.log(num);
}
let num = 1; // pembolehubah di luar fungsi
func(); // akan output 1
Jika menukar nilai pembolehubah dan selepas itu
setiap kali memanggil fungsi - console.log setiap
kali akan mengeluarkan hasil yang berbeza:
function func() {
console.log(num);
}
let num; // isytihar pembolehubah
num = 1; // tetapkan nilai 1
func(); // akan output 1
num = 2; // tetapkan nilai 2
func(); // akan output 2
Jika kita mempunyai beberapa fungsi, maka pembolehubah global akan boleh diakses dalam setiap fungsi tersebut:
function func1() {
console.log(num);
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // akan output 1
func2(); // akan output 1
Jika dalam salah satu fungsi berlaku perubahan pada pembolehubah global, maka pembolehubah itu akan berubah dalam semua fungsi yang menggunakan pembolehubah tersebut:
function func1() {
console.log(num);
num++; // ubah pembolehubah global
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // akan output 1
func2(); // akan output 2
Oleh kerana mana-mana fungsi boleh dengan mudah menukar pembolehubah global, penggunaannya merupakan tempat pembiakan untuk ralat yang sukar dikesan. Atas sebab ini, penggunaan pembolehubah global dalam skrip perlu diminimumkan. Adalah wajar jika ia langsung tiada atau jumlahnya sangat minimum.
Tentukan, tanpa menjalankan kod, apakah yang akan dipaparkan dalam konsol:
let num = 1;
function func() {
console.log(num);
}
func();
Tentukan, tanpa menjalankan kod, apakah yang akan dipaparkan dalam konsol:
let num = 1;
function func() {
console.log(num);
}
num = 2;
func();
Tentukan, tanpa menjalankan kod, apakah yang akan dipaparkan dalam konsol:
function func() {
console.log(num);
}
let num;
num = 1;
func();
num = 2;
func();