Skop Pembolehubah dalam if-else di JavaScript
Untuk memudahkan, mari kita andaikan terdapat satu kondisi yang sentiasa benar:
if (true) {
}
Mari kita lihat kod berikut:
if (true) {
let res = '!';
}
console.log(res);
Seperti yang anda lihat, nilai '!'
sepatutnya disimpan ke dalam pembolehubah res.
Walau bagaimanapun,
jika kod ini dijalankan, ralat akan dipaparkan
dalam konsol!
Masalahnya ialah pembolehubah yang diisytiharkan di dalam kurungan kerinting hanya kelihatan di dalam kurungan tersebut, dan tidak kelihatan di luarnya. Dalam istilah saintifik, ini merujuk kepada skop pembolehubah.
Boleh dikatakan bahawa skop pembolehubah yang diisytiharkan di dalam kurungan kerinting hanyalah kurungan kerinting tersebut. Walau bagaimanapun, jika pembolehubah diisytiharkan di luar kurungan kerinting, ia boleh dilihat baik di dalam mahupun di luarnya:
let res; // pembolehubah diisytiharkan di luar
if (true) {
res = '!';
}
console.log(res); // akan memaparkan '!'
Dalam contoh berikut, nilai sama ada 1
ataupun 2 disimpan ke dalam pembolehubah res
bergantung pada kondisi:
let num = 5;
if (num >= 0) {
let res = 1;
} else {
let res = 2;
}
console.log(res);
Walau bagaimanapun, jika kod ini dijalankan, ralat akan dipaparkan dalam konsol. Seperti yang kini anda faham, segalanya berkaitan dengan keterlihatan pembolehubah. Untuk menyelesaikan masalah ini, mari isytihar pembolehubah di luar kondisi:
let test = true;
let res; // isytihar pembolehubah di luar kondisi
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // akan memaparkan 1
Pengarang kod di bawah ingin melaksanakan
penyemakan umur untuk mencapai 18
tahun. Walau bagaimanapun, kod tersebut tidak berfungsi. Betulkan
ralat pengarang kod. Ini adalah kod bermasalah:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);