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();
블록이 루프에 연결되면 어떻게 될까? 모든 루프 반복이 동일한 변수를 사용할까? 아니면 각 반복마다 별도의 변수가 생성될까? 루프 내에서 생성된 클로저는 어떻게 작동할까?
자바스크립트의 블록 스코프를 설계하는 사람들은 영리한 일을 했다. 각 루프 반복은 함수에 대한 다른 호출이 각각 고유한 지역 변수를 얻는 것과 거의 똑같은 방식으로 고유한 블록 변수를 얻는다. 즉, 블록 스코프를 사용하여 고전적인 “루프 내 클로저” 문제를 해결할 수 있다.