더북(TheBook)

즉, 완벽한 이름의 재사용 가능한 함수를 정당한 이유 없이 블록 스코프로 대체하지 말라.

// 재사용 가능한 명명된 함수를 사용하여 이미 이와 같다면 
// 함수 코드를 루프로 이동할 필요가 없다.
function delayedLog(msg, delay) {
    setTimeout(function() {
        console.log(msg);
    }, delay);
}
// ...나중에...
for (let n = 0; n < 3; ++n) {
    delayedLog(n, 10);
}

블록 스코프는 기능의 크기를 지정하는 대신 사용할 수 없지만 혼동되는 인라인 익명 기능을 제거하는 데 유용한 도구이다.

전역 변수 생성을 피하기 위해 전역 스코프에서 스코프 지정 함수를 사용하는 경우 이를 블록(또는 13장에서 배우게 될 모듈)으로 대체할 수도 있다. 블록은 iffor와 같은 흐름 제어문에 연결될 필요가 없다. 독립적으로 사용할 수 있다. 따라서 범위 지정 기능은 범위 지정 블록이 될 수 있다.

{                         // 범위 블록
    let answer = 42;      // 'answer'는 블록 내에서 전역이 아니라 지역적이다.
    console.log(answer);
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.