ජාවාස්ක්‍රිප්ට් ශ්‍රිත වල එකම විචල්ය නම්

ශ්‍රිතය තුළත් පිටතත් num විචල්යය පවතිනවා යැයි සිතමු. මෙම අවස්ථාවේ දී, දේශීය විචල්යය num සමඟ කරන ඕනෑම වෙනස් කමක් සාමාන්‍ය විචල්යය num මත කිසිදු බලපෑමක් කරන්නේ නැත:

javascriptlet num = 1; // සාමාන්‍ය විචල්යය

function func() {
  let num = 2; // දේශීය විචල්යය
  console.log(num);
}
func(); // ශ්‍රිතය කැඳවන්න, 2 ප්‍රතිදානය කරයි

console.log(num); // 1 ප්‍රතිදානය කරයි - සාමාන්‍ය විචල්යය වෙනස් වී නැත

නමුත්, අපි දේශීය විචල්යය num let හරහා ප්‍රකාශ කිරීමට අමතක කළේ නම්, ශ්‍රිතය තුළ දේශීය විචල්යය num නිර්මාණය නොවී, සාමාන්‍ය විචල්යය පමණක් වෙනස් වේ:

javascriptlet num = 1;

function func() {
  num = 2; // let ලිවීමට අමතක විය - බාහිර විචල්යය වෙනස් කරමින්
  console.log(num);
}
func(); // ශ්‍රිතය කැඳවන්න, 2 ප්‍රතිදානය කරයි

console.log(num); // 2 ප්‍රතිදානය කරයි - විචල්යය වෙනස් විය

මෙහි අවස්ථා දෙකක් පවතියි: අපි සැබැවින්ම සාමාන්‍ය විචල්යය වෙනස් කිරීමට අපේක්ෂා කළේ නම් (එවිට සියල්ල හොඳින්), නැතහොත් අපි let අමතක කර අහම්බෙන් සාමාන්‍ය විචල්යය වෙනස් කළේ නම්.

දෙවන අවස්ථාව ස්ක්‍රිප්ට් අනපේක්ෂිත හැසිරීමකට මග පාදන අල්ප දෝෂයක් වන අතර, හඳුනා ගැනීම අසීරුය. එබැවින් සැමවිටම, නව විචල්යයක් හඳුන්වාදීමේදී එය let හරහා ප්‍රකාශ කරන්න.

Задание 1

කේතය ආරම්භ නොකර, කොන්සෝලයේ ප්‍රතිදානය කුමක්දැයි නිර්ණය කරන්න:

javascriptlet num = 1;

function func() {
  num = 2;
}
func();

console.log(num);
Задание 2

කේතය ආරම්භ නොකර, කොන්සෝලයේ ප්‍රතිදානය කුමක්දැයි නිර්ණය කරන්න:

javascriptlet num = 1;

function func() {
  let num = 2;
}
func();

console.log(num);