3. for의 초기화 부분에서 let으로 선언된 변수 목록을 기억하여 for 처리를 시작한다. 이 경우 counter 하나뿐이지만 더 많이 가질 수 있다.
4. CallEnvObject를 외부 환경으로 사용하여 루프의 초기화 부분에 대한 새 환경 객체를 만들고 값이 1인 counter에 대한 바인딩을 만든다.
5. CallEnvObject를 외부 환경 객체로 사용하여 첫 번째 반복에 대해 새 환경 객체(LoopEnvObject1)를 만든다.
6. 3 단계의 목록을 참조하여 LoopEnvObject1의 카운터에 대한 바인딩을 작성하고 값을 1(초기화 환경 객체의 값)로 설정한다.
7. LoopEnvObject1을 현재 환경 객체로 설정한다.
8. counter <= 3이 참이기 때문에 첫 번째 타이머 함수(timerFunction1이라고 하자)를 만들어 for의 본문을 실행하고 저장된 환경 객체로 LoopEnvObject1에 대한 참조를 제공한다.
9. timerFunction1에 대한 참조를 전달하는 setTimeout을 호출한다.
이 시점에서 메모리는 그림 2-5와 같다.
▲ 그림 2-5