 |
|
|  |
javascript º¯¼ö scope shadowing Ŭ·ÎÀú |
|
|
 |
8³â Àü |
º¯¼öÀÇ Scope
¼±¾ðÇÑ º¯¼ö°¡ À¯È¿ÇÑ ¿µ¿ª
function scope
¼±¾ðµÈ º¯¼ö´Â ¼±¾ðµÈ ÇÔ¼ö ¾È¿¡¼ Á¢±Ù °¡´É
¼±¾ðµÈ ÇÔ¼ö ¾È¿¡¼ ¼±¾ðµÈ ÇÔ¼ö (nested function)¿¡¼µµ Á¢±Ù °¡´É
º¯¼öÀÇ Shadowing
ÇÔ¼ö ¾È¿¡¼ ¹Û¿¡¼µµ ¼±¾ðµÇ¾ú´ø °°Àº À̸§ÀÇ º¯¼ö¸¦ »ç¿ëÇÏ´Â °æ¿ì
ÇÔ¼ö ¹ÛÀÇ º¯¼ö´Â Àá½Ã °¡·ÁÁü (shadowing)
ÇÔ¼ö ¾È¿¡¼´Â ÇØ´ç ÇÔ¼ö¿¡¼ÀÇ º¯¼ö¸¦ »ç¿ë (ÇÔ¼ö ¹Û º¯¼öÀÇ °ªÀº º¯ÇÏÁö ¾ÊÀ½)
ÇÔ¼ö¿¡¼ ºüÁ®³ª¿À¸é ´Ù½Ã ÇØ´ç º¯¼ö¿¡ Á¢±ÙÇÒ ¼ö ÀÖÀ½
ÇÔ¼ö ¾È¿¡¼¸¸ °ªÀÌ À¯ÁöµÇ¾î¾ß ÇÏ´Â °æ¿ì
ÇÔ¼ö ¾È¿¡¼ var Å°¿öµå¸¦ »ç¿ëÇØ ¼±¾ðÇÏ°í »ç¿ë
¿©·¯ ÇÔ¼ö¿¡¼ °ªÀÌ À¯ÁöµÇ¸é¼ »ç¿ëµÇ´Â º¯¼öÀÇ °æ¿ì
ÇÔ¼ö¸¦ Æ÷°ýÇÏ´Â °÷¿¡¼ ¼±¾ðÇÏ°í »ç¿ë
Closure Ŭ·ÎÀú
ÇÔ¼ö, ÇÔ¼ö°¡ ¼±¾ðµÉ ¶§ÀÇ environment·Î ±¸¼º
ÇÔ¼ö°¡ Á¤ÀÇ µÉ ¶§ÀÇ environment°¡ ÇÔ²² closure·Î °áÇյǸé¼, ´Ù¾çÇÑ È°¿ëÀÌ °¡´É
function makeCounterFunction(initVal){
var count = initVal;
function Increase(){
count++;
console.log(count);
}
return Increase;
}
var counter1 = makeCounterFunction(0);
var counter2 = makeCounterFunction(10);
counter1ÀÇ closure
ÇÔ¼ö : function Increase(){}
ȯ°æ : var count = 0;
counter2ÀÇ closure
ÇÔ¼ö : function Increase(){}
ȯ°æ : var count = 10; |
|
̵̧ : 294 |
̵̧
¸ñ·Ï
|
|
|  |
|