즉, 완벽한 이름의 재사용 가능한 함수를 정당한 이유 없이 블록 스코프로 대체하지 말라.
// 재사용 가능한 명명된 함수를 사용하여 이미 이와 같다면 // 함수 코드를 루프로 이동할 필요가 없다. function delayedLog(msg, delay) { setTimeout(function() { console.log(msg); }, delay); } // ...나중에... for (let n = 0; n < 3; ++n) { delayedLog(n, 10); }
블록 스코프는 기능의 크기를 지정하는 대신 사용할 수 없지만 혼동되는 인라인 익명 기능을 제거하는 데 유용한 도구이다.
전역 변수 생성을 피하기 위해 전역 스코프에서 스코프 지정 함수를 사용하는 경우 이를 블록(또는 13장에서 배우게 될 모듈)으로 대체할 수도 있다. 블록은 if나 for와 같은 흐름 제어문에 연결될 필요가 없다. 독립적으로 사용할 수 있다. 따라서 범위 지정 기능은 범위 지정 블록이 될 수 있다.
{ // 범위 블록 let answer = 42; // 'answer'는 블록 내에서 전역이 아니라 지역적이다. console.log(answer); }