티스토리 뷰

자바스크립트에서 스코프(Scope)는 변수, 함수, 객체가 접근할 수 있는 유효 범위를 정의합니다. 스코프의 종류는 크게 세 가지로 나눌 수 있습니다. 전역 스코프(Global Scope), 함수 스코프(Function Scope), 블록 스코프(Block Scope)입니다.

 

 

1. 전역 스코프(Global Scope)

 

전역 스코프는 모든 곳에서 접근 가능한 범위입니다. 전역 스코프에 선언된 변수나 함수는 어떤 스코프에서도 접근할 수 있습니다.

 

예제

var globalVar = "I am global";

function globalFunction() {
    console.log(globalVar); // "I am global"
}

globalFunction();
console.log(globalVar); // "I am global"

 

2. 함수 스코프(Function Scope)

함수 스코프는 함수 내부에서 선언된 변수나 함수에만 접근할 수 있는 범위입니다. 함수 내부에서 선언된 변수는 함수 외부에서 접근할 수 없습니다.

 

예제

function functionScope() {
    var functionVar = "I am inside a function";
    console.log(functionVar); // "I am inside a function"
}

functionScope();	// "I am inside a function";
console.log(functionVar); // ReferenceError: functionVar is not defined

 

3. 블록 스코프(Block Scope)

블록 스코프는 중괄호 '{}'로 둘러싸인 코드 블록 내에서만 접근할 수 있는 범위입니다. 'let'과 'const' 키워드는 블록 스코프를 따릅니다.

 

예제

if (true) {
    var blockVar = "I am blockVar";
    let blockLet = "I am inside a block";
    const blockConst = "I am also inside a block";
    console.log(blockVar); // "I am inside a block"
    console.log(blockConst); // "I am also inside a block"
}

console.log(blockVar);	// "I am blockVar";
console.log(blockLet); // ReferenceError: blockVar is not defined
console.log(blockConst); // ReferenceError: blockConst is not defined

 

4. 중첩 스코프(Nested Scope)

스코프는 중첩될 수 있으며, 내부 스코프는 외부 스코프에 접근할 수 있지만 그 반대는 불가능합니다.

 

예제

function outerFunction() {
    var outerVar = "I am outside!";

    function innerFunction() {
        var innerVar = "I am inside!";
        console.log(outerVar); // "I am outside!"
        console.log(innerVar); // "I am inside!"
    }

    innerFunction();
    // console.log(innerVar); // ReferenceError: innerVar is not defined
}

outerFunction();

 

이처럼 자바스크립트에서 스코프는 코드의 가독성, 유지보수성, 그리고 오류 방지를 위해 매우 중요한 역할을 합니다. 다양한 스코프의 종류와 특성을 이해하고 적절히 사용하는 것이 중요합니다!