[javascript] 전역 변수와 지역 변수의 가시성 문제

프로그래밍에서 변수는 해당 변수가 선언된 범위 내에서만 접근할 수 있습니다. 이때 전역 변수와 지역 변수의 가시성 문제는 중요한 주제입니다. 이 글에서는 전역 변수와 지역 변수의 차이와 가시성 관련 문제에 대해 살펴보겠습니다.

전역 변수 (Global Variable)

전역 변수는 스크립트나 함수의 어느 곳에서도 접근할 수 있는 변수입니다. 이 변수는 프로그램의 어느 곳에서든지 접근 가능하므로 전반적으로 사용되는 데이터를 저장하는데 유용합니다.

전역 변수는 프로그램의 어느 곳에서나 접근 가능하기 때문에 다른 부분에서 변수의 값을 변경할 수도 있습니다. 이는 의도치 않은 결과를 초래할 수 있습니다. 또한 전역 변수는 메모리 공간을 계속 차지하게 되므로 메모리 관리 측면에서도 주의가 필요합니다.

var globalVariable = "전역 변수";

function foo() {
  console.log(globalVariable); // "전역 변수"
}

foo();
console.log(globalVariable); // "전역 변수"

지역 변수 (Local Variable)

지역 변수는 스크립트나 함수 내에서 선언된 변수로, 해당 범위 내에서만 접근할 수 있습니다. 이 변수는 특정한 부분에서만 사용되는 데이터를 저장하는데 유용합니다. 지역 변수는 그 범위를 벗어나면 접근할 수 없으므로 변수의 값이 다른 부분에서 변경되는 일이 없습니다.

지역 변수는 해당 함수나 블록이 실행될 때 생성되며, 실행이 완료되면 메모리에서 해제됩니다.

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

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

가시성 문제

가시성 문제는 전역 변수와 지역 변수의 이름이 같아서 생기는 문제를 의미합니다. 이런 경우에 스코프 체인에 의해 변수가 참조되는데, 가장 가까운 범위에 선언된 변수를 사용하게 됩니다.

var variable = "전역 변수";

function foo() {
  var variable = "지역 변수";
  console.log(variable); // "지역 변수"
}

foo();
console.log(variable); // "전역 변수"

전역 변수와 같은 이름의 지역 변수를 선언하면, 함수 내에서는 지역 변수를 사용하게 됩니다. 이렇게 되면 전역 변수의 값이 함수 내에서 임시로 변경되더라도, 함수 외부에서는 전역 변수의 값이 유지됩니다.

결론

전역 변수와 지역 변수의 가시성 문제는 변수의 범위와 스코프를 이해하는데 중요한 개념입니다. 전역 변수는 프로그램 어디서나 접근 가능하며, 지역 변수는 특정한 범위 내에서만 접근 가능합니다. 변수의 가시성 문제에 유의하여 변수를 사용하고, 의도치 않은 오류를 방지할 수 있습니다.