Nuansa Lingkup Variabel dalam Konstruksi if-else di JavaScript
Lingkup variabel memiliki beberapa
nuansa. Mari kita lihat melalui contoh.
Mari kita deklarasikan variabel res di luar kondisi kita
dengan satu nilai, dan di dalam
kondisi ubah nilai tersebut menjadi nilai lain:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // akan menampilkan 2
Seperti yang Anda lihat, variabel res berubah
di dalam kondisi. Namun, semuanya akan berubah,
jika di dalam kondisi juga dideklarasikan variabel
res melalui let:
let res = 1;
if (true) {
let res = 2; // deklarasikan variabel melalui let
}
console.log(res); // akan menampilkan 1, bukan 2!
Di sini semuanya terjadi karena deklarasi variabel
melalui let di dalam kondisi menciptakan variabel
lokal res.
Artinya di dalam kondisi terdapat satu variabel
res, dan di luar kondisi - variabel lainnya.
Hal ini dapat dipastikan dengan menampilkan nilai variabel
ke konsol di dalam kondisi:
let res = 1;
if (true) {
let res = 2;
console.log(res); // akan menampilkan 2
}
console.log(res); // akan menampilkan 1
Penulis kode di bawah ini ingin melakukan
pengecekan usia untuk mencapai 18
tahun. Namun, kode tersebut pada nilai usia berapa pun
menampilkan nilai undefined ke konsol.
Perbaiki kesalahan penulis kode. Berikut adalah kode bermasalahnya:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
Penulis kode di bawah ini ingin melakukan
pengecekan usia untuk mencapai 18
tahun. Setelah pemeriksaan kode, ternyata jika
usia sama dengan atau lebih dari 18 tahun, maka
variabel adult akan diisi dengan true,
sebagaimana seharusnya, namun, jika usia kurang dari
18, maka variabel adult memiliki
nilai undefined. Perbaiki kesalahan
penulis kode.
Berikut adalah kode bermasalahnya:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
Penulis kode di bawah ini ingin melakukan
pengecekan usia. Namun, kode tersebut pada
nilai usia berapa pun menampilkan nilai
undefined ke konsol. Perbaiki kesalahan penulis kode.
Berikut adalah kode bermasalahnya:
let age = 17;
let res;
if (age >= 18) {
if (age <= 23) {
let res = 'dari 18 hingga 23';
} else {
let res = 'lebih dari 23';
}
} else {
let res = 'kurang dari 18';
}
console.log(res);
Penulis kode di bawah ini ingin melakukan
pengecekan usia. Namun, kode tersebut pada nilai
usia lebih besar dari 18 tahun menampilkan
nilai undefined ke konsol. Perbaiki
kesalahan penulis kode.
Berikut adalah kode bermasalahnya:
let age = 19;
let res;
if (age >= 18) {
let res;
if (age <= 23) {
res = 'dari 18 hingga 23';
} else {
res = 'lebih dari 23';
}
} else {
res = 'kurang dari 18';
}
console.log(res);