๐Ÿ” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ๊ฐœ

๋ณ€์ˆ˜ ์„ ์–ธ์˜ 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•.

var ๋ณ€์ˆ˜์˜ ์„ ์–ธ, ๊ฐ’์˜ ์ดˆ๊ธฐํ™”.

let ๋ธ”๋ก ๋ฒ”์œ„ ์ง€์—ญ ๋ณ€์ˆ˜ ์„ ์–ธ, ๊ฐ’์˜ ์ดˆ๊ธฐํ™”.

const ๋ธ”๋ก ๋ฒ”์œ„ ์ฝ๊ธฐ ์ „์šฉ ์ƒ์ˆ˜ ์„ ์–ธ.

ํด๋กœ์ €(closure)

  • ๋‚ด๋ถ€ํ•จ์ˆ˜๊ฐ€ ์™ธ๋ถ€ํ•จ์ˆ˜์˜ context์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๊ฐ€๋ฅดํ‚จ๋‹ค.

function outter(){
	var title = 'test';

	  function inner(){
        console.log(title);
    }
    inner();
}
outter();

์œ„ ์˜ˆ์ œ์—์„œ ๋‚ด๋ถ€ํ•จ์ˆ˜(inner)๊ฐ€ ์™ธ๋ถ€ํ•จ์ˆ˜(outter)์˜ ์ง€์—ญ๋ณ€์ˆ˜ title์— ์ ‘๊ทผํ•œ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

  • ์™ธ๋ถ€ํ•จ์ˆ˜์˜ ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‚ด๋ถ€ํ•จ์ˆ˜๊ฐ€ ์†Œ๋ฉธ๋ ๋•Œ๊นŒ์ง€ ์†Œ๋ฉธ๋˜์ง€ ์•Š๋Š” ํŠน์„ฑ์„ ๋งํ•œ๋‹ค.
function outter(){
    var title = 'test';
    return function(){
        alert(title);
    }
}
inner = outter();
inner();

outter์˜ ํ˜ธ์ถœ๊ฒฐ๊ณผ์ธ ์ต๋ช…ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ณ€์ˆ˜ inner์— ๋‹ด๊ธดํ›„, inner()์˜ ์‹คํ–‰์—์„œ title๋ณ€์ˆ˜์— ๋‹ด๊ธด ๊ฐ’์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค. ์ด๊ฒƒ์€ outter()์ด ์•„๋‹Œ inner()์˜ ํ˜ธ์ถœ ์ดํ›„ ์†Œ๋ฉธ๋œ๋‹ค๋Š”๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

var arr = [];
for(var i=0; i<5; i++){
	arr[i] = function(){
			console.log(i);
		}

}
for(var index in arr){
	console.log(arr[index]());
}

์œ„ ์˜ˆ์ œ๋Š” ํด๋กœ์ €์—์„œ ์ž์ฃผ ์ผ์–ด๋‚˜๋Š” ์‹ค์ˆ˜๋กœ ๋ชจ๋‘ 5๊ฐ€ ๋ฆฌํ„ด๋œ๋‹ค.

์ด๊ฒƒ์€ i๊ฐ€ ์™ธ๋ถ€ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์™€ ๊ฐ™์ด

var arr = []
for(var i=0; i<5; i++){
		arr[i] = function(id){
			return function(){
				return id;
			}
		}(i);

}
for(var index in arr){
	console.log(arr[index]());
}

๋‚ด๋ถ€ํ•จ์ˆ˜๊ฐ€ ์™ธ๋ถ€ํ•จ์ˆ˜์˜ ์ง€์—ญ๋ณ€์ˆ˜ id๋ฅผ ์ฐธ์กฐํ•ด ๋ฆฌํ„ด๋˜๋Š” ํ˜•ํƒœ๋ฅผ ๋„๊ธฐ ๋•Œ๋ฌธ์— 0๋ถ€ํ„ฐ 5์˜ ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค.