더북(TheBook)

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();

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

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

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