function func1() {
let val = 0;
function innerFunc() {
val = val + 2;
return val;
}
return innerFunc;
}
const func = func1();
console.log("mine : ",func());
console.log("mine : ",func());
위의 코드에서 함수 func1
은 내부에 함수 innerFunc
를 반환한다.
일반적으로 func1
의 실행이 끝나고 나서 block scope인 변수 val
의 할당은 해제된다.
그러나 func1
이 반환한 innerFunc
에서 변수 val
을 참조하므로 클로저에 저장되며 이후 func
를 통해서 innerFunc
를 실행하면 아래와 같이 정상적으로 실행되며 val
에 저장된 값 또한 유지됨을 알 수 있다.
전공 수업을 들으며 알아온 내용이 다소 많아서 약간 안심하고 있었다. 하지만 함수를 객체로 반환하고, 그에 따라 생겨나는 클로저같이 명확하게 이해하기 힘든 내용이 나오고 약간 헤맸다. 내 나름대로 확실히 정리하고 필요한 부분은 질문을 할 계획이다.
클로저🔥🔥🔥🔥에 대한 설명이 아주 쉽게 읽혀서 좋아요!
덕분에 한번 더 잘 짚고 가요 : )