JavaScript ශ්රිතවල වාග් පරිසරයන් භාවිතා කිරීම
අපට ශ්රිතයක් තිබිය යුතුය, එහි ප්රති result ලයක් ලෙස වෙනත් ශ්රිතයක් ආපසු ලබා දේ:
function test() {
return function() {
}
}
මව් ශ්රිතයට කිසියම් අගයන් තිබේ නම්, එම අගයන් ආපසු ලබා දෙන ශ්රිතයේ වාග් පරිසරයේ අඩංගු වේ:
function test() {
let num = 1; // මව් ශ්රිතයේ අගය
return function() {
// වාග් පරිසරය = {num: 1}
}
}
අපේ ආපසු ලබා දෙන ශ්රිතයේ කේතය තුළ
console.log ලියන්න, එය අගය
num පෙන්වයි:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
දැන් අපි මව් ශ්රිතය ගෙන්වමු
test සහ එහි ක්රියාකාරී ප්රති result ලය
func අගය ලෙස ලියමු:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func අගයට ආපසු ලබා දෙන
ශ්රිතය ලියා ඇත. අපි අපේ ශ්රිතය ගෙන්වමු - එහි
ප්රති result ලය ලෙස එය අගය
num පෙන්වයි:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // 1 පෙන්වයි
ශ්රිතයෙන් පිටත අගය
num පෙන්වීමට උත්සාහ කළහොත් - එය ලබා ගත නොහැක:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
console.log(num); // num අගය මෙහි ලබා ගත නොහැක
ඔබට පෙනෙන පරිදි, ස්ථානීය අගය num
අපේ ශ්රිතයේ වාග් පරිසරයට බැඳී ඇති අතර දැන්, ඕනෑම
ස්ථානයක අපට කේතය ක්රියාත්මක කර
අගය num ලබා ගත හැකිය,
එම ස්ථානයේ අගය ලබා ගත නොහැකි වුවද.
ඇත්ත වශයෙන්ම සමාන ප්රති result ලයක් ලබා ගත හැකිය
num අගය ගෝලීය කිරීමෙන්:
function test() {
return function() {
console.log(num);
}
}
let num = 1; // ගෝලීය අගය
let func = test();
func(); // 1 පෙන්වයි
කෙසේ වෙතත්, මෙහි සැලකිය යුතු වෙනසක් පවතී:
නව පිටපතේ අගය num හැකිය
ශ්රිතවලින් පිටත වෙනස් කරන්න (එය ගෝලීය බැවින්),
නමුත් පැරණි පිටපතේ - නොහැක.
කේතය ක්රියාත්මක නොකර, කුමක් පෙන්වනු ඇත්ද යන්න නිශ්චය කරන්න:
function test() {
let num1 = 1;
let num2 = 2;
return function() {
return num1 + num2;
}
}
let func = test();
console.log(func());
කේතය ක්රියාත්මක නොකර, කුමක් පෙන්වනු ඇත්ද යන්න නිශ්චය කරන්න:
function test() {
let num1 = 1;
let num2 = 2;
return function() {
return num1 + num2;
}
}
console.log(test()());
කේතය ක්රියාත්මක නොකර, කුමක් පෙන්වනු ඇත්ද යන්න නිශ්චය කරන්න:
function test() {
let num1 = 1;
return function() {
return num1 + num2;
}
}
let num2 = 2;
let func = test();
console.log(func());
කේතය ක්රියාත්මක නොකර, කුමක් පෙන්වනු ඇත්ද යන්න නිශ්චය කරන්න:
function test() {
let num = 1;
return function() {
return num;
}
}
let num = 2;
let func = test();
console.log(func());