본문 바로가기
JavaScript

[JS] 클로저 주의사항

by watergrace2u 2020. 10. 28.
반응형
SMALL
var arr=[]
for(var i=0; i<5; i++){
	arr[i] = function(){
    	return i;
    }
}
for(var index in arr){
	console.log(arr[index]()); // 5 5 5 5 5
}

출력결과로 0 1 2 3 4가 나오길 원했지만 그러지 않음...

아래처럼하면 0 1 2 3 4 나옴

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]()); // 0 1 2 3 4
}

내부함수가 외부함수의 지역변수에 접근할 수 있게 해줌.

 

cf. www.inflearn.com/course/%EC%A7%80%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%96%B8%EC%96%B4-%EA%B8%B0%EB%B3%B8/lecture/2538?tab=note&mm=close

 

자바스크립트 언어 기본 - javascript - 인프런

생활코딩의 자바스크립트 언어 기본 수업입니다. 기본 문법을 통한 자바스크립트 기본에 대해 배울 수 있습니다. 입문 프로그래밍 언어 JavaScript 온라인 강의 생활코딩 자바스크립트 언어 기본

www.inflearn.com

 

반응형
LIST

'JavaScript' 카테고리의 다른 글

모던 JS 튜토리얼 정리 1  (0) 2020.11.12
[JS] apply 사용  (0) 2020.10.28
[JS] Fetch API 사용하기  (0) 2020.10.05
[JS] async와 await 이해  (0) 2020.10.05
[JS] Promise 이해  (0) 2020.10.05

댓글