Omvang van veranderlikes in if-else in JavaScript

Laat ons vir eenvoud 'n altyd-uitvoerende voorwaarde hê:

javascriptif (true) {
  
}

Kom ons kyk na die volgende kode:

javascriptif (true) {
  let res = '!';
}

console.log(res);

Soos jy kan sien, moet die waarde '!' in die veranderlike res gestoor word. As jy hierdie kode egter uitvoer, sal 'n fout in die konsole vertoon word!

Die ding is dat veranderlikes wat binne die krulhakies verklaar is, slegs binne daardie hakies sigbaar is, en nie daarbuite nie. In wetenskaplike terme word hier gepraat oor die omvang van veranderlikes.

Ons kan sê dat die omvang van veranderlikes wat binne krulhakies verklaar word, slegs daardie krulhakies is. As 'n veranderlike egter buite die krulhakies verklaar word, dan is dit sigbaar beide binne en buite hulle:

javascriptlet res; // veranderlike verklaar buite

if (true) {
  res = '!';
}

console.log(res); // sal '!' uitvoer

In die volgende voorbeeld word die waarde 1 of die waarde 2 in die veranderlike res gestoor, afhangende van die voorwaarde:

javascriptlet num = 5;

if (num >= 0) {
  let res = 1;
} else {
  let res = 2;
}

console.log(res);

As jy hierdie kode egter uitvoer, sal 'n fout in die konsole vertoon word. Soos jy nou al verstaan, het alles te make met die sigbaarheid van veranderlikes. Om die probleem op te los, laat ons die veranderlike buite die voorwaarde verklaar:

javascriptlet test = true;
let res; // verklaar die veranderlike buite die voorwaarde

if (test) {
  res = 1;
} else {
  res = 2;
}

console.log(res); // sal 1 uitvoer
Задание 1

Die outeur van die onderstaande kode wou 'n ouderdomskontrole uitvoer vir die bereiking van 18 jaar. Die kode werk egter nie. Korrigeer die outeur se fout. Hier is die problematiese kode:

javascriptlet age = 17;

if (age >= 18) {
  let adult = true;
} else {
  let adult = false;
}

console.log(adult);