책을 읽으면서 의문점이 들었던 부분과 꼭 기억하고 싶은 부분들이 있어서 그 부분을 중점적으로 기록하기로 했습니다.
변수의 생명주기는 메모리 공간이 확보된 시점부터 멤모리 공간이 해제되어 가용 메모리 풀에 반환된는 시점까지로 지역 변수의 생명 주기는 함수의 생명 주기와 일치하고 전역 변수의 생명 주기는 애플리케이션의 생명 주기와 같습니다.
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로 초기화되어 있음