더북(TheBook)

2.7.3 while과 do-while 루프

whiledo-while은 블록이 자체 환경 객체를 가진다는 사실에서 오는 이점도 있다. for의 초기화 표현식이 없기 때문에 거기에 선언된 바인딩 값을 복사하는 작업을 수행하지 않지만 각 루프 반복과 연관된 블록은 여전히 자체 환경을 갖는다. 실제로 작동하는지 보자. 코드 2-7을 실행한다.

코드 2-7 while 루프에서 클로저–closures-in-while-loops.js

function closuresInWhileLoops() {
    let outside = 1;
    while (outside <= 3) {
        let inside = outside;
        setTimeout(function() {
            console.log("inside = " + inside + ", outside = " + outside);
        }, 10);
        ++outside;
    }
}
closuresInWhileLoops();

ClosuresInWhileLoops를 실행할 때 콘솔의 출력은 다음과 같다.

inside = 1, outside = 4
inside = 2, outside = 4
inside = 3, outside = 4
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.