전역 스코프와 지역 스코프의 차이점

전역 스코프(또는 글로벌 스코프)와 지역 스코프는 JavaScript에서 중요한 개념입니다. 이 두 스코프는 변수와 함수의 생명 주기와 접근 가능성을 결정하는 역할을 합니다.

전역 스코프

전역 스코프는 프로그램이 시작될 때 생성되며, 프로그램이 종료될 때까지 유지됩니다. 즉, 전역 스코프에 정의된 변수와 함수는 어느 곳에서든지 접근이 가능합니다. 전역 스코프에 선언된 변수와 함수는 전역 객체에 속하며, 웹 브라우저에서는 window 객체가 전역 객체입니다.

var globalVariable = "전역 변수";

function globalFunction() {
    console.log("전역 함수");
}

console.log(globalVariable);    // output: 전역 변수
globalFunction();               // output: 전역 함수

전역 스코프의 변수와 함수는 어디서든 호출하고 사용할 수 있기 때문에, 프로젝트 전체에서 공유해야 하는 전역 변수나 함수를 사용할 때 유용합니다. 그러나 남용하면 변수나 함수의 충돌과 오류를 발생시킬 수 있으므로 주의가 필요합니다.

지역 스코프

지역 스코프는 함수 내에서 생성되는 스코프로, 함수가 호출될 때마다 생성되고 함수 실행이 끝나면 제거됩니다. 지역 스코프에 선언된 변수와 함수는 해당 함수 안에서만 접근할 수 있습니다. 함수 안에서 선언된 변수는 함수 내에서만 유효하고, 외부에서는 접근할 수 없습니다. 이는 변수의 이름 충돌을 방지하고 코드의 가독성과 유지보수성을 높이는 데 도움이 됩니다.

function localFunction() {
    var localVariable = "지역 변수";
    console.log(localVariable);    // output: 지역 변수
}

localFunction();
console.log(localVariable);        // output: ReferenceError: localVariable is not defined

지역 스코프는 함수마다 독립적으로 생성되기 때문에, 함수 내부에서 동일한 이름의 변수나 함수를 선언해도 서로 영향을 주지 않습니다. 이를 “변수의 스코프가 함수마다 다르다”라고 말합니다. 만약 함수 안에서 변수를 선언하지 않고 사용하면, 자바스크립트는 외부 스코프에서 해당 변수를 찾게 됩니다.

var outerVariable = "외부 변수";

function innerFunction() {
    console.log(outerVariable);    // output: 외부 변수
    var outerVariable = "내부 변수";
    console.log(outerVariable);    // output: 내부 변수
}

innerFunction();

결론

전역 스코프와 지역 스코프는 프로그래밍에서 변수와 함수의 생명 주기와 접근 가능성을 결정하는 중요한 개념입니다. 전역 스코프는 프로그램 전체에서 접근 가능한 변수와 함수를 정의하는 반면, 지역 스코프는 함수 내부에서만 사용 가능한 변수와 함수를 정의합니다. 올바르게 사용하면 코드의 가독성과 유지보수성을 높이는 데 도움이 되지만, 남용시 충돌과 오류를 발생시킬 수 있으므로 신중하게 사용해야 합니다.

#JavaScript #스코프