[javascript] 전역 변수와 지역 변수의 초기화 시점

자바스크립트에서 변수는 전역 변수와 지역 변수로 선언할 수 있습니다. 전역 변수는 어떤 함수나 블록 밖에서 선언되는 변수이고, 지역 변수는 특정 함수나 블록 내에서 선언되는 변수입니다. 이러한 변수들의 초기화 시점에 대해 알아보겠습니다.

전역 변수의 초기화 시점

전역 변수의 초기화 시점은 스크립트가 로딩되는 시점입니다. 전역 변수는 어떤 함수나 블록 내에서 선언되지 않고 스크립트의 최상단에서 선언되기 때문에, 스크립트가 실행되는 순간에 바로 초기화됩니다.

var globalVariable = 10;
console.log(globalVariable);  // 10

지역 변수의 초기화 시점

지역 변수는 특정 함수나 블록 내에서 선언되기 때문에 해당 함수나 블록이 실행되는 순간에 초기화됩니다. 함수가 호출되면 함수 내에서 선언된 지역 변수들이 초기화되고, 블록 내에서만 유효한 변수들도 블록이 실행되는 순간에 초기화됩니다.

function myFunction() {
  var localVariable = 20;
  console.log(localVariable);  // 20
}

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

지역 변수는 해당 함수나 블록 내에서만 유효하므로, 외부에서 접근하려고 하면 ReferenceError가 발생합니다.

변수 호이스팅

변수 호이스팅은 변수가 선언되기 전에도 참조할 수 있는 현상입니다. 이를 통해 선언 이전에 변수를 사용할 수 있게 됩니다. 하지만 초기화는 호이스팅되지 않으며, 변수 할당은 실제로 선언된 위치에서 이루어집니다.

console.log(myVariable);  // undefined
var myVariable = 30;
console.log(myVariable);  // 30

위의 예시에서 myVariable은 선언되기 전에 참조되었지만, 호이스팅을 통해 undefined로 값을 가지게 됩니다. 실제 할당은 선언된 위치에서 이루어지므로, 두 번째 console.log에서는 30이 출력됩니다.

결론

전역 변수는 스크립트가 로딩되는 시점에서 초기화되고, 지역 변수는 해당 함수나 블록이 실행되는 시점에서 초기화됩니다. 변수 호이스팅은 선언 전에도 변수를 참조할 수 있는 현상이지만, 초기화는 호이스팅되지 않으며 실제 할당은 선언된 위치에서 이루어집니다.