2.7.3 while과 do-while 루프
while과 do-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