JavaScript භාෂාවේ ES6 නව සංස්කරණය සමඟ var, let සහ const යන වචන තුනක් පාවිච්චි කරමින් වෙනස් වාරික ප්රකාශන ක්රමයක් ලැබුණා. මේ තුනේ ප්රධාන වෙනස්කම්, කේතයේ scope, hoisting, redeclaration සහ Temporal Dead Zone (TDZ) වැනි කරුණු මත පදනම්ව වේ.
Scope කියන්නේ වාරිකයක් (variable) කුමන කොටසේ පවතිනවා, ඒ කොටස තුළ පමණක් පවත්නා බවයි. var භාවිතා කළහොත්, එය function‑scoped වේ. ඒ කියන්නේ, එක function එකක් තුළ කොහෙවත් var x = 10; කියලා ප්රකාශ කළත්, function එකේ ඕනෑම තැනක එය ලබාගත හැක. උදාහරණයක්: function test(){ if(true){ var x=10; } console.log(x); } මෙහි x 10 ලෙස ප්රින්ට් වේ.
ඒ වෙනුවට let සහ const block‑scoped වේ. ඒ කියන්නේ, { } තුළ පමණක් එම වාරිකය පවතිනවා. function test(){ if(true){ let x=10; } console.log(x); } මෙහි x භාවිතා කිරීම ReferenceError එකක් දුන්නේය.
ගෝලීය (global) මට්ටමින් var ප්රකාශන globalThis වස්තුවේ ගුණයක් (property) ලෙස එකතු වේ. එයින් var x=10; හා globalThis.x=10; සමාන වේ. නමුත් let හෝ const ගෝලීය වාරිකයක් ලෙස globalThis හි ගුණයක් නොවේ, ඒ නිසා console.log(globalThis.y); හි undefined ලැබේ.
Redeclaration (නැවත ප්රකාශන) සම්බන්ධයෙන් var ඉඩ දෙයි. var a=10; var a=20; කියා දෙවරක් ප්රකාශ කළොත් අන්තිම අගය 20 වේ. එයට විරුද්ධව let හා const නැවත ප්රකාශන අවසර නොදේ; let a=10; let a=20; කිරීම SyntaxError එකක් දුන්නේය.
Hoisting යනු ප්රකාශන (declaration) කේතයේ ඉදිරියට ගෙන යාමයි. පරණ JavaScript (var පමණක්) හි console.log(x); var x=5; කේතය undefined ලෙස පෙන්වයි, ඒක var x; console.log(x); x=5; ලෙස පරිවර්තනය වේ. නමුත් let / const සමඟ console.log(x); let x=5; කිරීම ReferenceError එකක් දුන්නේය. මෙය Temporal Dead Zone (TDZ) නිසාය – ප්රකාශන සිදු වීමට පෙර වාරිකය මතකයේ පවතිනවා නමුත් ප්රවේශයට නොහැක.
ශ්රී ලංකාවට ඇති වැදගත්කම
- සියලුම සිසුන් – ES6 නව වාරික ප්රකාශන පද්ධතිය ඉගෙන ගැනීමෙන් කේත ලේඛනය තේරුම් ගත හැකිවෙයි, දෝෂ හඳුනා ගැනීම පහසු වේ.
- දියුණුකරුවන් – block‑scoped වාරිකයන් භාවිතයෙන් කේතය පවත්වා ගැනීම, නවතම frameworks (React, Vue) සමඟ අනුකූල වීම ඉක්මනින් සිදු වේ.
- ව්යාපාර – නිවැරදි variable handling මගින් production යෙදුම් වල බග් සංඛ්යාව අඩුවේ, performance වැඩිවේ, ඉන් පසු maintenance වියදම් අඩුවේ.
අවසන් වශයෙන්, var පරණ ක්රමයක් වන අතර, නව ES6 වාරික ප්රකාශන (let, const) භාවිතා කිරීමේදී කේතයේ ආරක්ෂාව, maintainability සහ readability වැඩි වේ. ඔබේ JavaScript පරිසරය නවීකරණය කර, නිවැරදි variable declaration එකක් තෝරා ගන්න.