javascript closer

참고 : http://dev.naver.com/tech/ajaxui/ajaxui_2.php#a_2_2

function buildList(list) {
    var result = [];
    for (var i = 0; i < list.length; i++) {

        var item = 'item' + list[i];
        result.push( function() {alert(item + ' ' + list[i])} );
    }
    return result;
}
 
function testList() {

    var fnlist = buildList([1,2,3]);
    for (var j = 0; j < fnlist.length; j++) {
        fnlist[j]();
    }
}
 
testList();
위를 실행하면 alert(item3 undefined)가 3번 수행된다.

** 이해 하기 위해서는 함수 자체가 상태를 지닌 객체라고 인식 하면 편할 것 같다.
즉 buildList에서 var로 선언한 부분은 멤버 변수이고 클로저는 멤버 함수의 역할을 한다고 생각하면 이해가 될꺼 같다.

=_= 이런것도 모르고 있었다니. ㅠㅠ 다시 기초부터 천천히 gogogo~

댓글

이 블로그의 인기 게시물

Spring Batch - JobParameters Default Value 만들기

Hsqldb Server 재기동 시 오류