클로저

jeongwon yun·2022년 10월 25일
0

Javascript Core

목록 보기
12/13

클로저 문제 => 스코프, 비동기, var

'클로저가 문제다' 아니다.

클로저를 사용해서 문제를 해결한다.

반복문과 비동기를 함께 사용하면 문제가 종종 발생

function a() {
	for (var i = 0; i < 3; i++) {
    	setTimeout(() => {
        	console.log(i);
        }, i * 1000);
    }
}
a();

3
3
3
이 출력된다.

var 가 함수 스코프이기 때문에


var => let 면 해결된다. 하지만 이는 클로저로 해결한 것이 아니다.

function a() {
	for (let i = 0; i < 3; i++) {
    	setTimeout(() => {
        	console.log(i);
        }, i * 1000);
    }
}
a();

0
1
2
이 출련된다.

let 말고 즉시실행함수로 클로저 생성해서 해결할 수 있다.

function a() {
	for (var i = 0; i < 3; i++) {
    	(function(k) {
        	setTimeout(() => {
                console.log(k);
            }, i * 1000);
        })(i);
    }
}
a();

0
1
2
이 출련된다.

var 과 반복문과 비동기가 문제를 만듬

클로저 : 함수와 외부 변수와의 관계

0개의 댓글