<aside> 💡 전역 변수를 반드시 사용할 이유가 없다면, 지역 변수를 사용해야 한다.
</aside>
변수는 선언된 위치에서 생성되고 소멸한다.
function foo() {
var x = 'local';
console.log(x); // local
return x;
}
foo();
console.log(x); // ReferenceError: x is not defined
함수 안에서도 변수가 먼저 선언되고, undefined로 초기화 됨
이후 함수 몸체를 구성하는 문들이 실행
지역 변수의 생명 주기는 함수의 생명 주기와 일치
함수가 생성한 스코프는 렉시컬 환경이라 부른다.
할당된 메모리 공간은 더 이상 참조되지 않을 때 가비지 콜렉터에 의해 해제된다.
var x = 'global';
function foo() {
console.log(x); // undefined
var x = 'local';
}
foo();
console.log(x);
호이스팅은 스코프 단위로 동작한다.
브라우저의 전역 객체는 window다.
전역 객체는 코드가 실행되기 이전 단계에 자바스크립트 엔진에 의해 어떤 객체보다도 먼저 생성된다.
<aside>
💡 var
키워드로 선언한 전역 변수의 생명주기는 전역 객체의 생명주기와 일치한다.
</aside>