자바스크립트의 클로저
Mar 07 2023
JavaScript에서 함수는 특정 작업을 수행하도록 설계된 코드 블록입니다. 호출하면 실행됩니다.
JavaScript에서 함수는 특정 작업을 수행하도록 설계된 코드 블록입니다. 호출하면 실행됩니다.
예를 들어:
function myFunction(message){
console.log(message)
}
myFunction("Hello there!!")
myFunction("Welcome, boss")
그러나 첫 번째 실행이나 이전 실행에서 무슨 일이 일어났는지 알고 싶다면 어떻게 해야 할까요? 그것이 폐쇄가 오는 곳입니다.
폐쇄란 무엇입니까?
간단히 말해서 함수가 외부 함수 범위에 액세스할 수 있는 다른 함수를 반환하는 경우를 JavaScript에서는 클로저라고 합니다.
예를 들어:
function outer (){
let counter = 0;
function inner (){
counter++;
return counter;
}
return inner
}
const result = outer()
function inner (){
counter++;
return counter;
}
따라서 어떻게든 JavaScript는 이전 counter값을 기억하고 있으며 수학 연산을 수행하고 있습니다.
Js가 어떻게 하고 있는지 물어볼 수 있습니다.
함수가 함수를 반환할 때 함수만 반환하는 것이 아니라 해당 함수의 어휘 범위도 반환합니다. 반환된 함수와 함께 숨겨진 속성으로 반환된 함수와 관련된 모든 변수, 데이터. 그 숨겨진 속성은 또한Backpack
이 배낭에는 많은 이름이 있습니다.
- '변수 환경'(COVE)에 대한 폐쇄
- 영구 어휘 범위 참조 데이터(PLSRD)
- 배낭
- 폐쇄
다른 예를 살펴보겠습니다.
function outer (){
let counter = 0;
function inner (){
counter++;
return counter;
}
return inner
}
const result = outer()
result() // 1
result() // 2
const anotherResult = outer()
anotherResult() // 1
anotherResult() // 2
폐쇄 이유:
- 원스 와 메모라이즈 같은 강력한 기능을 가능하게 하는 도우미 기능을 만드는 데 도움이 됩니다 .
- 어휘 범위와 클로저를 사용하여 Iterator 와 Generator를 만드는 데 도움이 됩니다 .
- 모듈 패턴을 포함한 많은 JavaScript 디자인 패턴은 전역 네임스페이스를 오염시키지 않고 애플리케이션의 상태를 보존함으로써 클로저를 사용합니다.
- 콜백 과 약속은 클로저에 의존하여 비동기 JavaScript 세계에서 상태를 유지합니다.

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































