[javascript] 지역 변수의 블록 스코프와 함수 스코프의 차이
자바스크립트에서 변수의 스코프는 변수의 유효 범위를 의미합니다. 자바스크립트에서는 지역 변수의 스코프에는 두 가지 타입이 있습니다. 블록 스코프와 함수 스코프입니다. 이 두 가지 스코프는 사용하는 방식과 변수의 유효 범위에 차이가 있습니다.
블록 스코프 (Block Scope)
블록 스코프는 중괄호({})로 둘러싸인 영역을 의미합니다. if 문, for 문, while 문 등과 같은 제어문 또는 함수 내부 등에서 변수를 선언할 때 이 변수는 블록 스코프를 가집니다. 이렇게 선언된 변수는 해당 블록 내부에서만 접근할 수 있으며, 외부에서는 접근할 수 없습니다.
if (true) {
let blockScopedVariable = 10;
console.log(blockScopedVariable); // 10
}
console.log(blockScopedVariable); // ReferenceError: blockScopedVariable is not defined
위의 코드에서는 if 문의 블록 내부에서 blockScopedVariable
이라는 변수를 선언하였습니다. 그리고 이 변수를 블록 외부에서는 참조할 수 없습니다.
함수 스코프 (Function Scope)
함수 스코프는 함수 내에서 선언된 변수가 해당 함수 내에서만 접근 가능한 스코프를 의미합니다. 함수 내에 선언된 변수는 해당 함수 내에서 유효하며, 외부에서는 접근할 수 없습니다.
function foo() {
var functionScopedVariable = 20;
console.log(functionScopedVariable); // 20
}
foo();
console.log(functionScopedVariable); // ReferenceError: functionScopedVariable is not defined
위의 코드에서는 foo
라는 함수 내에서 functionScopedVariable
이라는 변수를 선언하고 사용하고 있습니다. 이 변수는 함수 내에서만 접근 가능합니다. 함수 외부에서는 이 변수에 접근할 수 없습니다.
블록 스코프와 함수 스코프의 차이점
- 블록 스코프는 중괄호({})로 둘러싸인 영역에서 변수를 선언하고, 함수 스코프는 함수 내에서 변수를 선언합니다.
- 블록 스코프에서 선언된 변수는 해당 블록 내에서만 접근 가능하고, 함수 스코프에서 선언된 변수는 해당 함수 내에서만 접근 가능합니다.
- 블록 스코프에서 선언된 변수는 외부에서는 접근할 수 없지만, 함수 스코프에서 선언된 변수는 외부에서도 접근이 가능한 경우가 있습니다. 이는 클로저(Closure)라는 개념과 관련이 있습니다.
블록 스코프와 함수 스코프의 차이를 알아두면 변수의 범위와 유효성을 더욱 정확하게 이해할 수 있습니다.
참고자료: