[javascript] 블록 스코프와 클로저
자바스크립트에서 변수 스코프는 함수 스코프를 따릅니다. 그러나 ES6부터는 let
과 const
키워드를 사용하여 블록 스코프 변수를 선언할 수 있습니다. 블록 스코프는 해당 변수가 선언된 중괄호 블록 내에서만 유효하게 됩니다.
블록 스코프
예를 들어, 다음과 같이 if
문 내에서 let
으로 변수를 선언하면 블록 스코프가 적용됩니다.
if (true) {
let name = 'John';
console.log(name); // 출력: John
}
console.log(name); // 에러: name이 정의되지 않음
이처럼 블록 스코프 변수의 범위는 중괄호로 제한되므로 외부에서 접근할 수 없습니다.
클로저
클로저는 내부 함수가 외부 함수의 변수에 접근할 수 있는 메커니즘을 의미합니다. 아래의 예제에서는 클로저를 사용하여 내부 함수가 외부 함수의 변수에 접근하는 방법을 보여줍니다.
function outerFunction() {
let outerVar = 'I am outer';
function innerFunction() {
console.log(outerVar); // 외부 함수의 변수에 접근
}
return innerFunction;
}
let innerFunc = outerFunction();
innerFunc(); // 출력: I am outer
이처럼 클로저를 이용하면 외부 함수의 변수에 접근하여 활용할 수 있습니다.
블록 스코프와 클로저를 이해하면 변수의 범위와 생명주기를 더욱 명확하게 이해할 수 있으며, 안전하고 효율적인 코드를 작성할 수 있습니다.
참고 자료: MDN web docs