ECMAScript ±Õ°ü£¨closure£©
ECMAScript ×îÒ×ÈÃÈËÎó½âµÄÒ»µãÊÇ£¬ËüÖ§³Ö±Õ°ü£¨closure£©¡£
±Õ°ü£¬Ö¸µÄÊÇ´Ê·¨±íʾ°üÀ¨²»±»¼ÆËãµÄ±äÁ¿µÄº¯Êý£¬Ò²¾ÍÊÇ˵£¬º¯Êý¿ÉÒÔʹÓú¯ÊýÖ®ÍⶨÒåµÄ±äÁ¿¡£
¼òµ¥µÄ±Õ°üʵÀý
ÔÚ ECMAScript ÖÐʹÓÃÈ«¾Ö±äÁ¿ÊÇÒ»¸ö¼òµ¥µÄ±Õ°üʵÀý¡£Çë˼¿¼ÏÂÃæÕâ¶Î´úÂ룺
var sMessage = "hello world"; function sayHelloWorld() { alert(sMessage); } sayHelloWorld();
ÔÚÉÏÃæÕâ¶Î´úÂëÖУ¬½Å±¾±»ÔØÈëÄÚ´æºó£¬²¢Ã»ÓÐΪº¯Êý sayHelloWorld() ¼ÆËã±äÁ¿ sMessage µÄÖµ¡£¸Ãº¯Êý²¶»ñ sMessage µÄÖµÖ»ÊÇΪÁËÒÔºóµÄʹÓã¬Ò²¾ÍÊÇ˵£¬½âÊͳÌÐòÖªµÀÔÚµ÷Óøú¯ÊýʱҪ¼ì²é sMessage µÄÖµ¡£sMessage ½«ÔÚº¯Êýµ÷Óà sayHelloWorld() ʱ£¨×îºóÒ»ÐУ©±»¸³Öµ£¬ÏÔʾÏûÏ¢ "hello world"¡£
¸´ÔӵıհüʵÀý
ÔÚÒ»¸öº¯ÊýÖж¨ÒåÁíÒ»¸ö»áʹ±Õ°ü±äµÃ¸ü¼Ó¸´ÔÓ¡£ÀýÈ磺
var iBaseNum = 10; function addNum(iNum1, iNum2) { function doAdd() { return iNum1 + iNum2 + iBaseNum; } return doAdd(); }
ÕâÀº¯Êý addNum() °üÀ¨º¯Êý doAdd() £¨±Õ°ü£©¡£ÄÚ²¿º¯ÊýÊÇÒ»¸ö±Õ°ü£¬ÒòΪËü½«»ñÈ¡Íⲿº¯ÊýµÄ²ÎÊý iNum1 ºÍ iNum2 ÒÔ¼°È«¾Ö±äÁ¿ iBaseNum µÄÖµ¡£ addNum() µÄ×îºóÒ»²½µ÷ÓÃÁË doAdd()£¬°ÑÁ½¸ö²ÎÊýºÍÈ«¾Ö±äÁ¿Ïà¼Ó£¬²¢·µ»ØËüÃǵĺ͡£
ÕâÀïÒªÕÆÎÕµÄÖØÒª¸ÅÄîÊÇ£¬doAdd() º¯Êý¸ù±¾²»½ÓÊܲÎÊý£¬ËüʹÓõÄÖµÊÇ´ÓÖ´Ðл·¾³ÖлñÈ¡µÄ¡£
¿ÉÒÔ¿´µ½£¬±Õ°üÊÇ ECMAScript Öзdz£Ç¿´ó¶àÓõÄÒ»²¿·Ö£¬¿ÉÓÃÓÚÖ´Ðи´ÔӵļÆËã¡£
Ìáʾ£º¾ÍÏñʹÓÃÈκθ߼¶º¯ÊýÒ»Ñù£¬Ê¹ÓñհüҪСÐÄ£¬ÒòΪËüÃÇ¿ÉÄÜ»á±äµÃ·Ç³£¸´ÔÓ¡£