ජාවාස්ක්රිප්ට් ශ්රිත වල එකම විචල්ය නම්
ශ්රිතය තුළත් පිටතත් num විචල්යය
පවතිනවා යැයි සිතමු. මෙම අවස්ථාවේ දී, දේශීය
විචල්යය num සමඟ කරන ඕනෑම වෙනස් කමක්
සාමාන්ය විචල්යය num මත කිසිදු බලපෑමක්
කරන්නේ නැත:
let num = 1; // සාමාන්ය විචල්යය
function func() {
let num = 2; // දේශීය විචල්යය
console.log(num);
}
func(); // ශ්රිතය කැඳවන්න, 2 ප්රතිදානය කරයි
console.log(num); // 1 ප්රතිදානය කරයි - සාමාන්ය විචල්යය වෙනස් වී නැත
නමුත්, අපි දේශීය විචල්යය num
let හරහා ප්රකාශ කිරීමට අමතක කළේ නම්,
ශ්රිතය තුළ දේශීය විචල්යය num
නිර්මාණය නොවී, සාමාන්ය විචල්යය පමණක් වෙනස් වේ:
let num = 1;
function func() {
num = 2; // let ලිවීමට අමතක විය - බාහිර විචල්යය වෙනස් කරමින්
console.log(num);
}
func(); // ශ්රිතය කැඳවන්න, 2 ප්රතිදානය කරයි
console.log(num); // 2 ප්රතිදානය කරයි - විචල්යය වෙනස් විය
මෙහි අවස්ථා දෙකක් පවතියි: අපි සැබැවින්ම සාමාන්ය
විචල්යය වෙනස් කිරීමට අපේක්ෂා කළේ නම් (එවිට
සියල්ල හොඳින්), නැතහොත් අපි let අමතක කර
අහම්බෙන් සාමාන්ය විචල්යය වෙනස් කළේ නම්.
දෙවන අවස්ථාව ස්ක්රිප්ට් අනපේක්ෂිත හැසිරීමකට
මග පාදන අල්ප දෝෂයක් වන අතර, හඳුනා ගැනීම අසීරුය.
එබැවින් සැමවිටම, නව විචල්යයක් හඳුන්වාදීමේදී එය
let හරහා ප්රකාශ කරන්න.
කේතය ආරම්භ නොකර, කොන්සෝලයේ ප්රතිදානය කුමක්දැයි නිර්ණය කරන්න:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
කේතය ආරම්භ නොකර, කොන්සෝලයේ ප්රතිදානය කුමක්දැයි නිර්ණය කරන්න:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);