ఇక్మాస్క్రిప్ట్ క్లోజర్

ఇక్మాస్క్రిప్ట్ అత్యంత అర్ధాల్లోకి పరిణమించే పదం అది క్లోజర్స్ ను మద్దతు ఇస్తుంది.

闭包,指的是词法表示包括不被计算的变量的函数,也就是说,函数可以使用函数之外定义的变量。

简单的闭包实例

在 ECMAScript 中使用全局变量是一个简单的闭包实例。请思考下面这段代码:

var sMessage = "hello world";
function sayHelloWorld() {
  alert(sMessage);
}
sayHelloWorld();

ఈ కోడ్ రాక్ష్యం జాలులో ఉన్నప్పుడు, sayHelloWorld() ఫంక్షన్ యొక్క sMessage విలువను గణించకుండా ఉంది. ఈ ఫంక్షన్ స్మృతిలో sMessage యొక్క విలువను పిండించింది, అనగా వివరణకరణ ప్రోగ్రామ్ ఫంక్షన్ sayHelloWorld() యొక్క అనుమతించడానికి సమయంలో సమాచారం విలువను తనిఖీ చేస్తుంది. sMessage ఫంక్షన్ sayHelloWorld() అనుమతించడానికి తరువాత (చివరి ప్రక్రియ) విలువను అందిస్తుంది, "hello world" సందేశాన్ని ప్రదర్శిస్తుంది.

క్లిష్టమైన బ్లాక్ ఉదాహరణ

ఒక ఫంక్షన్ లో మరొక ఫంక్షన్ ని నిర్వహించడం బ్లాక్ ని చాలా క్లిష్టంగా చేస్తుంది. ఉదాహరణకు:

var iBaseNum = 10;
function addNum(iNum1, iNum2) {
  function doAdd() {
    return iNum1 + iNum2 + iBaseNum;
  }
  return doAdd();
}

ఇక్కడ, addNum() ఫంక్షన్ doAdd() (బ్లాక్) ని కలిగి ఉంది. అంతర్గత ఫంక్షన్ బ్లాక్ అని పిలుస్తారు, ఎందుకంటే వాటివల్ల బాహ్య ఫంక్షన్ యొక్క పరామితులను మరియు సార్వత్రిక వెంబడిన పరిమాణాలను పొందవచ్చు. addNum() యొక్క చివరి చర్యగా doAdd() ని అందుకుంది, రెండు పరామితులను మరియు సార్వత్రిక వెంబడిన పరిమాణాన్ని కలిపి అందిస్తుంది.

గుర్తించవలసిన ముఖ్యమైన సంపద ఈమైనా, doAdd() ఫంక్షన్ పరామితులను అంగీకరించదు, వాడు పరిశీలన పరిసరం నుండి వచ్చే విలువలను వాడుతుంది.

చూడండి, బ్లాక్ ఏకాంతం ఈక్మాస్క్రిప్ట్ లో చాలా బలవంతమైన మరియు బహుముఖీనమైన భాగం, చాలా క్లిష్టమైన గణనలను నిర్వహించడానికి ఉపయోగించవచ్చు.

సూచన:ఏదైనా ఉన్నత ఫంక్షన్ వంటిగా ఉపయోగించడానికి జాగ్రత్తగా బ్లాక్ చేయండి, ఎందుకంటే వాటివల్ల చాలా క్లిష్టంగా మారవచ్చు.