자바스크립트 함수의 블록 스코프 (Function Block Scope)
블록 스코프란, 중괄호 {}로 감싸진 코드 블록 안에서 변수의 범위(scope)가 제한되는 것을 의미합니다. 함수 내부에서 선언된 변수는 오직 그 함수 내에서만 접근하고 사용할 수 있습니다. 이를 함수 스코프라고 부릅니다.
블록 스코프의 중요성을 이해하기 위해, 먼저 전역 스코프와 함수 스코프의 차이점을 살펴보겠습니다.
var globalVariable = "전역 변수";
function myFunction() {
var functionVariable = "함수 내 변수";
console.log(globalVariable); // 전역 변수에 접근 가능
console.log(functionVariable); // 함수 내 변수에 접근 가능
}
console.log(globalVariable); // 전역 변수에 접근 가능
console.log(functionVariable); // ReferenceError: functionVariable is not defined
위의 예제에서, globalVariable
은 전역 스코프에 선언되었기 때문에 어디서든 접근 가능합니다. 하지만 functionVariable
은 함수 스코프에 선언되었기 때문에 함수 외부에서는 접근할 수 없습니다.
이제 블록 스코프의 예제를 살펴보겠습니다.
function myFunction() {
if (true) {
var blockVariable = "블록 내 변수";
let blockScopedVariable = "블록 내 스코프 변수";
}
console.log(blockVariable); // 블록 외부에서도 접근 가능
console.log(blockScopedVariable); // ReferenceError: blockScopedVariable is not defined
}
myFunction();
위의 예제에서, blockVariable
변수는 if문의 블록 내에서 선언되었지만, 함수 블록 내부에서도 접근 가능합니다. 이는 var 키워드를 사용하여 선언하였기 때문입니다. 반면에, blockScopedVariable
변수는 let 키워드로 선언되었기 때문에 블록 외부에서는 접근할 수 없습니다.
블록 스코프는 let과 const 키워드로도 선언할 수 있으며, 이는 특정 코드 블록 내에서만 유효한 변수를 생성합니다.
블록 스코프는 코드의 가독성과 유지보수를 개선하는 데 도움이 됩니다. 코드 블록 안에서 선언된 변수는 그 블록 밖에서는 사용되지 않으므로 충돌이나 오류를 방지할 수 있습니다.
따라서 함수 내부에서 변수를 사용할 때는 항상 블록 스코프를 고려하여 변수를 선언해야 합니다.