개발 일기
클로저의 개념 본문
클로저란?
클로저란 폐쇄라는 뜻을 가지고 있다.
함수가 선언될 그 당시에 주변의 환경과 함께 갇히는 것을 의미하는데 함수가 속한 렉시컬 스코프를 기억하며, 함수가 렉시컬 스코프 밖에서 실행될 때도 이 스코프에 접근할 수 있게 해주는 기능을 가지고 있다.
렉스컬 스코프란 함수가 선언이 되는 위치에 따라서 상위 스코프가 결정되는 스코프이다.
즉, 클로저는 내부함수는 외부함수의 지역변수에 접근할 수 있는데 외부함수의 실행이 끝나서 외부함수가 소멸된 이후에도 내부함수가 외부함수의 변수에 접근할 수 있음을 의미한다.
function sayHello () {
const a = 'Hello';
const b = 'World';
function sumString () {
console.log(a + ' ' + b);
}
return sumString;
}
const myFunc = sayHello();
myFunc(); // 'Hello World'
예제 코드를 보면 myFunc라는 변수는 sayHello 함수를 실행하고 있다.
이때 myFunc은 a, b 변수가 담겨있는 sayHello 함수 스코프 바깥에 있음에도 a와 b를 합친 결과 값을 정상적으로 출력하고 있다.
이는 바로 클로저 떄문이며 자바스크립트 함수가 선언될 당시에 클로저가 형성되어 주변 환경, 즉 렉시컬 스코프를 기억할 수 있게 해준다.
반응형
'JavaScript' 카테고리의 다른 글
Method란? (0) | 2023.02.03 |
---|