2.7 루프의 블록 스코프

    이 장의 앞부분에서 블록 스코프를 보았다. 겉으로 보기에는 매우 간단하다. 블록 내에서 let이나 const로 선언된 변수는 블록 내에서만 접근할 수 있다.

    function anotherBlockExample(str) {
        if (str) {
            let index = str.indexOf("X");    // 'index'는 블록 내에서만 존재한다.
            if (index != -1) {
                str = str.substring(0, index);
            }
        }
        // 여기서 'index'를 사용할 수 없다. 블록 외부이다.
        return str;
    }
    anotherBlockExample();

    블록이 루프에 연결되면 어떻게 될까? 모든 루프 반복이 동일한 변수를 사용할까? 아니면 각 반복마다 별도의 변수가 생성될까? 루프 내에서 생성된 클로저는 어떻게 작동할까?

    자바스크립트의 블록 스코프를 설계하는 사람들은 영리한 일을 했다. 각 루프 반복은 함수에 대한 다른 호출이 각각 고유한 지역 변수를 얻는 것과 거의 똑같은 방식으로 고유한 블록 변수를 얻는다. 즉, 블록 스코프를 사용하여 고전적인 “루프 내 클로저” 문제를 해결할 수 있다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.