JavaScript පරිසරයේ ප්රතිදායක ක්රමලේඛනයේ මූලික තත්ත්වයක් වන Closure ගැන ඔබ දැනගෙන 있나요? Closure යනු එක් function එකක් නිර්මාණය වූ විට එයට අදාළ lexical environment එක මතකයේ රඳවා තබා ගැනීමයි. මෙය කේතයේ පාරදියකින් පසුද එම function එකට අවශ්ය variable‑වලට ප්රවේශය ලබා දේ.
Closure කෙටි හැඳින්වීම
JavaScript හි සියලු functions ලෙක්සිකල් (lexical) scope එකක් අනුගමනය කරයි. ඒ කියන්නේ, function එක ලියා තිබූ ස්ථානයේ variables සොයා ගනී, එය ක්රියාත්මක වන ස්ථානයේ නොව. මෙම නීතිය Bash වැනි dynamic scope භාවිතා කරන භාෂා වලට විරුද්ධ වේ.
උදාහරණයක් ලෙස, ගෝලීය variable const x = 10; එකක් සහිත external function එකක් තුළ internal function එකක් නිර්මාණය කර, එය ක්රියාත්මක කළ විට console හි 10 සහ 20 යන අගයන් පෙන්වයි. මෙය lexical scope එකේ පරමාර්ථය පෙන්වයි.
Execution Context සහ Call Stack
JavaScript engine එක code එකක් ක්රියාත්මක කරන විට Execution Context එකක් සෑදේ. Global context එක එකවර නිර්මාණය වේ, function call එකක් සිදු වුවහොත් නව function context එකක් Call Stack එකට එක් කරයි. මෙම context එකට lexical environment එකේ reference එකක් ඇතුළත් වේ, එමඟින් function එක අවසන් වූ පසුද එය variable‑වලට ප්රවේශය ලබා ගත හැකිය.
Nested Functions හා Closure
Function එකක් තුළ තවත් function එකක් නිර්මාණය කළ විට, අභ්යන්තර function එකට පිටත function එකේ scope එකට ප්රවේශය ඇත. මෙය closures හඳුන්වයි. අභ්යන්තර function එක return කිරීම, variable එකකට assign කිරීම, හෝ callback ලෙස භාවිතා කිරීමෙන් එය පිටතට “පලා” යා හැකිය. මෙය asynchronous programming, memoization, data encapsulation වැනි තාක්ෂණික ක්රමවල ප්රයෝජනවත් වේ.
ශ්රී ලංකාවට ඇති වැදගත්කම
Closure ගැන හොඳ අවබෝධයක් ඇති කිරීම ශ්රී ලංකාවේ මෘදුකාංග සංවර්ධකයින්ට විශාල ප්රතිලාභයක් ගෙන දෙයි. සිසුන්ට functions‑based design patterns ඉගෙන ගැනීමට, startups සඳහා codebase එක සරල කර maintainability වැඩි කිරීමට, සහ enterprise applications වල memory leak වැලැක්වීමට උපකාරී වේ. තවද, Node.js සහ front‑end frameworks (React, Vue) භාවිතා කරන විට closures මගින් state management සහ event handling කාර්යක්ෂමව කළ හැකිය.
අවසානයේ, closures යනු JavaScript එකේ “අමතක නොකරන්නා වූ” රහසක් වන අතර, ඒවා නිවැරදිව භාවිතා කිරීම ඔබගේ කේතයට ශක්තිය, පිරිසිදුකම සහ scalability එකක් එක් කරයි.