[javascript] var 키워드로 선언한 변수의 유효 범위

JavaScript에서 ‘var’ 키워드로 선언한 변수는 함수범위(function scope)를 갖습니다. 즉, 해당 변수는 선언된 함수 내에서만 유효하며 함수 외부에서는 접근할 수 없습니다.

예제

다음은 ‘var’ 키워드로 변수를 선언하고 함수 범위를 갖는 예제입니다:

function testScope() {
    if (true) {
        var localVar = "I am a local variable";
        console.log(localVar); // 출력: "I am a local variable"
    }
    console.log(localVar); // 출력: "I am a local variable"
}

testScope();

console.log(localVar); // 에러: localVar is not defined

위의 코드에서 ‘var’ 키워드로 선언된 ‘localVar’ 변수는 ‘testScope’ 함수 내에서 유효하며, 함수의 바깥에서는 접근할 수 없습니다.

호이스팅

‘var’ 키워드로 선언된 변수는 호이스팅(hoisting)이 발생합니다. 이는 해당 변수가 선언된 위치에 상관없이 함수 범위 내 어디서든지 접근할 수 있다는 의미입니다. 따라서 변수가 정의되기 전에 해당 변수에 접근해도 오류가 발생하지 않습니다. 하지만 실제 할당은 변수가 선언된 코드 라인에서 이루어집니다.

let과 const

ECMAScript 6(ES6)부터는 ‘let’과 ‘const’ 키워드를 사용하여 블록범위(block scope)를 갖는 변수를 선언할 수 있습니다. 이를 통해 좀 더 엄격한 변수 스코프를 지원합니다.

JavaScript에서 변수의 스코프와 관련하여 ‘var’, ‘let’, ‘const’ 키워드의 차이점에 대해 더 자세히 알아볼 필요가 있습니다.

참고 문헌: