책을 읽으면서 의문점이 들었던 부분과 꼭 기억하고 싶은 부분들이 있어서 그 부분을 중점적으로 기록하기로 했습니다.
변수의 생명주기는 메모리 공간이 확보된 시점부터 멤모리 공간이 해제되어 가용 메모리 풀에 반환된는 시점까지로 지역 변수의 생명 주기는 함수의 생명 주기와 일치하고 전역 변수의 생명 주기는 애플리케이션의 생명 주기와 같습니다.
function outerFunction() {
let count = 0;
function increment() {
count++;
console.log(count);
}
return increment;
}
const myIncrement = outerFunction();
myIncrement(); // 출력: 1
myIncrement(); // 출력: 2
outerFunction은 increment 함수를 반환함outerFunction 내부에 있는 count 변수는 increment 함수가 생성될 때의 스코프를 기억하고 있기 때문에 increment 함수가 외부의 count 변수를 계속해서 참조할 수 있음myIncrement는 outerFunction에서 반환된 increment 함수를 참조함myIncrement 함수를 호출할 때마다 count가 증가하고, 콘솔에 값이 출력됨count 변수는 outerFunction의 실행이 끝난 이후에도 유지되며, increment 함수의 스코프 내에서 계속해서 사용됨var x = 'global';
function foo() {
console.log(x); // undefined
var x = 'local';
}
foo();
console.log(x); // global
console.log(x) 시점에 이미 선언되었고 undefined로 초기화되어 있음