முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 4 · பாடம் 4 இன் 4பாடத்திட்டத்தில் 16/32~12 min
தொகுதி பாடங்கள் (4/4)

மூடல்கள் மற்றும் நோக்கம்

ஒரு மூடுதல் என்பது அது வரையறுக்கப்பட்ட நோக்கத்தின் மாறிகளை "நினைவில் வைக்கும்" ஒரு செயல்பாடாகும், அந்த நோக்கம் முடிந்த பிறகும். இது மந்திரம் போல் தெரிகிறது ஆனால் இது நோக்கம் விதிகளின் நேரடி விளைவு.

ஸ்கோப் சங்கிலி

ஒரு செயல்பாடானது வெளியே என அறிவிக்கப்பட்ட மாறிகளைப் படிக்க முடியும், ஸ்கோப்களின் சங்கிலியை மேலே கொண்டு செல்லும்:

JS
const moltiplicatore = 10;

function moltiplicaPer10(n) {
  return n * moltiplicatore; // reads from the closure
}

moltiplicaPer10(3); // 30

செயல்பாட்டு தொழிற்சாலை

மிகவும் பொதுவான பேட்டர்ன்: ஒரு செயல்பாடு தரும் மற்றொரு செயல்பாடு, உடன் "தனிப்பயனாக்கப்பட்ட" அது பெற்ற அளவுருக்கள்.

JS
function creaSaluto(prefisso) {
  return function (nome) {
    return `${prefisso}, ${nome}!`;
  };
}

const ciao = creaSaluto('Ciao');
const buongiorno = creaSaluto('Buongiorno');

ciao('Anna'); // 'Ciao, Anna!'
buongiorno('Marco'); // 'Buongiorno, Marco!'

creaSalutoக்கான ஒவ்வொரு அழைப்பும் அதன் சொந்த prefisso உடன் தனி நோக்கத்தை உருவாக்குகிறது.

தனியார் அரசுடன் எதிர்

உன்னதமான உதாரணம்: ஒரு கவுண்டரை வெளியில் காட்டாமல் வைத்திருக்கும் மூடல்.

JS
function creaContatore() {
  let n = 0;
  return function () {
    n++;
    return n;
  };
}

const c = creaContatore();
c(); // 1
c(); // 2
c(); // 3

const c2 = creaContatore();
c2(); // 1  ← isolated state!

n தனிப்பட்டது: மூடலுக்கு வெளியே உள்ள எவரும் அதைப் படிக்கவோ மாற்றவோ முடியாது.

முயற்சி செய்து பாருங்கள்

உடற்பயிற்சி#js.m4.l4.e1
முயற்சிகள்: 0ஏற்றுகிறது…

ஒரு செயல்பாட்டை வழங்கும் தொழிற்சாலை `makeCounter()` ஐச் செயல்படுத்தவும்: செயல்பாட்டின் ஒவ்வொரு அழைப்பும் 1 இல் இருந்து தொடங்கும் முற்போக்கான முழு எண்ணை வழங்கும். வெவ்வேறு கவுண்டர்கள் சுயாதீனமாக இருக்க வேண்டும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

உள்ளே makeCounter உடன் n ஐ அறிவிக்கவும், பின்னர் ++n செய்யும் செயல்பாட்டை திரும்பவும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

மதிப்பாய்வு பயிற்சி

உடற்பயிற்சி#js.m4.l4.e2
முயற்சிகள்: 0ஏற்றுகிறது…

ஒரு செயல்பாட்டை வழங்கும் `makeAdderWith(base)` ஐச் செயல்படுத்தவும்: n எண்ணைக் கொடுத்தால், அது அடிப்படை + n ஐ வழங்குகிறது. ஒவ்வொரு சேர்பவரும் அதன் சொந்த தளத்தை நினைவில் கொள்கிறார்கள்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

வெளிப்புற அளவுருவிலிருந்து அடித்தளத்தைப் பயன்படுத்தும் அம்பு செயல்பாட்டைத் திருப்பி அனுப்பவும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்