ì´ë¤ ë³ìê° ì¬ì©ë ê¹ì?
ìë makeWorker í¨ìë ë´ë¶ìì ë¤ë¥¸ í¨ì를 ë§ë¤ê³ í´ë¹ í¨ì를 ë°íí©ëë¤. ë°íë ì í¨ìë ë¤ë¥¸ ì´ëê°ìì í¸ì¶í ì ììµëë¤.
ìë¡ê² ë°íë í¨ìë ìì±ë ê³³ì 기ìµíê³ ê·¸ê³³ì ì¸ë¶ ë³ìì ì ê·¼í ê¹ì, ìëë©´ í¸ì¶ë ìì¹ë¥¼ 기ì¤ì¼ë¡ ì¸ë¶ ë³ìì ì ê·¼í ê¹ì? ìëë©´ ë ë¤ì¼ê¹ì?
function makeWorker() {
let name = "Pete";
return function () {
alert(name);
};
}
let name = "John";
// í¨ì를 ë§ëëë¤.
let work = makeWorker();
// í¨ì를 í¸ì¶í©ëë¤.
work(); // 무ìì´ ëì¬ê¹ì?
âPeteâ, âJohnâ ì¤ ì´ë¤ ì´ë¤ ê°ì´ ì¶ë ¥ë ê¹ì?
ì ëµì Peteì ëë¤.
work() í¨ìë ë§ë¤ì´ì§ ê³³ì 기ì¤ì¼ë¡ ì¸ë¶ ë ì컬 ë³ì 참조를 íµí´ nameì ê°ì ¸ìµëë¤.
ê·¸ëì ê²°ê³¼ë "Pete"ì
ëë¤.
ë§ì½ makeWorker() í¨ì ë´ë¶ì let nameê° ììë¤ë©´ ë°ë¡ ì ì ì¤ì½íì í´ë¹íë ì¸ë¶ìì ë³ì를 ê²ìí´ì "John"ì´ ì¶ë ¥ëìì ê²ëë¤.