JavaScript හි ශ්රිතවල ගෝලීය විචල්යයන්
JavaScript හි (අනෙකුත් භාෂා බොහෝ විට එසේ නොවේ) ශ්රිතයකින් පිටත අර්ථ දක්වා ඇති විචල්යයන් එම ශ්රිතය තුළට දෘශ්යමාන වේ. එවැනි විචල්යයන් ලෙස හැඳින්වේ ගෝලීය. අපි උදාහරණයක් බලමු:
let num = 1; // ශ්රිතයට පිටත විචල්යය
function func() {
console.log(num); // ශ්රිතය තුළට num විචල්යය දෘශ්යමාන වේ
}
func(); // 1 ප්රතිදානය කරයි
ඇත්ත වශයෙන්ම විචල්යය අර්ථ දැක්විය යුත්තේ ශ්රිතය අර්ථ දැක්වීමට පෙර නොව එය කැඳවීමට පෙර වේ:
function func() {
console.log(num);
}
let num = 1; // ශ්රිතයට පිටත විචල්යය
func(); // 1 ප්රතිදානය කරයි
විචල්යයේ අගය වෙනස් කර ඊට පසුව
සෑම විටම ශ්රිතය කැඳවන්නේ නම් - console.log සෑම
විටම විවිධ ප්රතිඵල ප්රතිදානය කරයි:
function func() {
console.log(num);
}
let num; // විචල්යය ප්රකාශ කරමු
num = 1; // අගය 1 සකසන්න
func(); // 1 ප්රතිදානය කරයි
num = 2; // අගය 2 සකසන්න
func(); // 2 ප්රතිදානය කරයි
අපට ශ්රිත කිහිපයක් තිබේ නම්, ගෝලීය විචල්යය මෙම ශ්රිත එක් එක් තුළට ප්රවේශ විය හැකිය:
function func1() {
console.log(num);
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // 1 ප්රතිදානය කරයි
func2(); // 1 ප්රතිදානය කරයි
ශ්රිතවලින් එකක ගෝලීය විචල්යය සමඟ වෙනස්කම් සිදු වුවහොත්, එම විචල්යය මෙම විචල්යය භාවිතා කරන සියලුම ශ්රිතවල වෙනස් වේ:
function func1() {
console.log(num);
num++; // ගෝලීය විචල්යය වෙනස් කරන්න
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // 1 ප්රතිදානය කරයි
func2(); // 2 ප්රතිදානය කරයි
ඕනෑම ශ්රිතයකට පහසුවෙන් ගෝලීය විචල්යය වෙනස් කළ හැකි බැවින්, ඒවායේ භාවිතය හඳුනාගැනීමට අපහසු දෝෂ වල උණුසුම් කුඩයක් සපයයි. මෙම හේතුව නිසා, ගෝලීය විචල්යවල භාවිතය ස්ක්රිප්ට් එකෙහි අවම කිරීමට අවශ්ය වේ. ඒවා සම්පූර්ණයෙන්ම නොමැති වීම හෝ අවම ප්රමාණයක් පැවතීම සුදුසුය.
කේතය ක්රියාත්මක නොකර, කොන්සෝලයට ප්රතිදානය වන්නේ කුමක්දැයි තීරණය කරන්න:
let num = 1;
function func() {
console.log(num);
}
func();
කේතය ක්රියාත්මක නොකර, කොන්සෝලයට ප්රතිදානය වන්නේ කුමක්දැයි තීරණය කරන්න:
let num = 1;
function func() {
console.log(num);
}
num = 2;
func();
කේතය ක්රියාත්මක නොකර, කොන්සෝලයට ප්රතිදානය වන්නේ කුමක්දැයි තීරණය කරන්න:
function func() {
console.log(num);
}
let num;
num = 1;
func();
num = 2;
func();