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
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.