Nama Pembolehubah yang Sama dalam Fungsi JavaScript
Katakan kedua-dua di luar dan di dalam fungsi terdapat pembolehubah
num. Dalam kes ini, sebarang perubahan
kepada pembolehubah lokal num tidak
mempengaruhi pembolehubah global num:
let num = 1; // pembolehubah global
function func() {
let num = 2; // pembolehubah lokal
console.log(num);
}
func(); // panggil fungsi, akan output 2
console.log(num); // akan output 1 - pembolehubah global tidak berubah
Namun, jika kita lupa mengisytiharkan pembolehubah lokal
num menggunakan let, maka di dalam fungsi
pembolehubah lokal num tidak akan dicipta,
sebaliknya pembolehubah global tersebut akan diubah:
let num = 1;
function func() {
num = 2; // lupa menulis let - mengubah pembolehubah luaran
console.log(num);
}
func(); // panggil fungsi, akan output 2
console.log(num); // akan output 2 - pembolehubah telah berubah
Terdapat dua situasi di sini: sama ada kita memang
ingin mengubah pembolehubah global (maka
tiada masalah), atau kita terlupa let dan secara tidak sengaja
mengubah pembolehubah global.
Kes kedua merupakan ralat yang sukar dikesan,
yang membawa kepada tingkah laku skrip yang tidak dapat diramal.
Oleh itu, sentiasa isytiharkan pembolehubah baru
anda menggunakan let.
Tentukan, tanpa menjalankan kod, apakah yang akan dipaparkan dalam konsol:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Tentukan, tanpa menjalankan kod, apakah yang akan dipaparkan dalam konsol:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);