ජාවාස්ක්‍රිප්ට් හි නම් කළ ශ්‍රිත ප්‍රකාශන

අප සතුව පහත දැක්වෙන ශ්‍රිත ප්‍රකාශනය තිබිය යුතුය:

javascriptlet test = function() {
  console.log('!');
};

test(); // '!' ප්‍රතිදානය කරයි

අපගේ ශ්‍රිතයට func යන නම ලබා දෙමු:

javascriptlet test = function func() {
  console.log('!');
};

test();

ඔබ දැනටමත් දන්නා පරිදි, මෙම නම භාවිතයෙන් ශ්‍රිතය වෙත ප්‍රවේශ විය නොහැක:

javascriptlet test = function func() {
  console.log('!');
};

test(); // '!' ප්‍රතිදානය කරයි
func(); // දෝෂයක් ලබා දෙයි

ප්‍රවේශ විය නොහැකි නම් ශ්‍රිතයකට නමක් ලබා දීමට හේතුව කුමක්ද? කාරණය වන්නේ මෙම නම ශ්‍රිතයෙන් පිටතට ප්‍රවේශ විය නොහැකි වුවද, එම ශ්‍රිතය තුළින් ප්‍රවේශ විය හැකි බවයි.

අපි පරීක්ෂා කර බලමු:

javascriptlet test = function func() {
  console.log(func); // ශ්‍රිතය එහිම මූලාශ්‍ර කේතය ප්‍රතිදානය කරයි
};

test(); // ශ්‍රිතය ක්‍රියාත්මක කරමු

අපි අපගේ ශ්‍රිතය එය තුළම ක්‍රියාත්මක කරමු:

javascriptlet test = function func() {
  console.log('!'); // '!' ප්‍රතිදානය කරයි
  func(); // අප විසින්ම ක්‍රියාත්මක කරමු
};

test();

මෙම කේතය ධාවනය කළහොත්, කොන්සෝලයට අසීමිත ප්‍රතිදාන ගණනක් ප්‍රතිදානය වේ.

ඇත්ත වශයෙන්ම, අපගේ ශ්‍රිතය තුළම ක්‍රියාත්මක කළ හැක්කේ func ලෙස පමණක් නොව, test ලෙසද ය:

javascriptlet test = function func() {
  console.log('!');
  test(); // අප විසින්ම ක්‍රියාත්මක කරමු
};

test();

වෙනස කුමක්ද? වෙනස එයයි, නම test - එය සරලවම විචල්‍යයකි. ස්ක්‍රිප්ට් ක්‍රියාත්මක වන අවස්ථාවේ දී අපගේ ශ්‍රිතය වෙනත් විචල්‍යයකට ලියා තැබීමට හෝ පරාමිතියක් ලෙස මාරු කිරීමට හැකිය - මෙම අවස්ථාවේ දී, විචල්‍යය test සහ ශ්‍රිතය අතර සම්බන්ධය නැති විය හැක.

නම func දැඩි ලෙස ශ්‍රිතයට බැඳී ඇත්තේ විශේෂයෙන් අපගේ ශ්‍රිතය තුළින්ම එය වෙත ප්‍රවේශ වීමට හැකි වන පරිදිය.

ශ්‍රිතයේ නම සහිත මෙවැනි Function Expression නම් කළ ශ්‍රිත ප්‍රකාශන ලෙස හැඳින්වේ.