개발모음집

javascript closure (클로저) 본문

client

javascript closure (클로저)

void 2020. 6. 29. 10:00

사전적 의미

폐쇄, 닫힘, 마감, 종결

 

고유 명사로서 의미

클로저는 함수와 함수가 선언된 어휘적 환경의 조합이다. 

출처 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Closures

클로저는 반환된 내부함수가 자신이 선언됐을 때의 환경(Lexical environment)인 스코프를 기억하여 자신이 선언됐을 때의 환경(스코프) 밖에서 호출되어도 그 환경(스코프)에 접근할 수 있는 함수를 말한다. 이를 조금 더 간단히 말하면 클로저는 자신이 생성될 때의 환경(Lexical environment)을 기억하는 함수다

출처 : https://poiemaweb.com/js-closure

 

클로저는 내부 함수가 정의될 때 외부 함수의 환경을 기억하고 있는 내부 함수를 말합니다. 
클로저란 외부함수의 실행이 모두 끝났음에도 불구하고 내부함수가 외부함수의 지역변수에 접근할 수 있는 것을 말함
출처 : 블로그

function outer(){
     var name = "void"
 
     return function(){
          console.log(name)
     }
}
 
var inner = outer() //함수 실행으로 인해 반환되는 값이 inner 라는 변수에 저장됨
inner() // outer는 return 키워드를 통해 종료가 되었음에도 불구하고 inner() 를 호출하면 void 라고 로그 찍힘

 

왜 쓰는가? 왜 있는가?

- 정보은닉과 캡슐화 (자바의 private  접근제어자를 흉내냄)
- 데이터 보존 및 활용
- 지역변수 보호

왜 알아야하는가?

js 엔진이 이렇게 동작하니까.. 이해하면서 js 코딩을 하려면 알아야 한다..

 

어떻게 쓰는가?

상태유지 (현재 상태를 기억하고 변경된 최신 상태를 유지)
전역 변수의 사용억제

출처 : https://poiemaweb.com/js-closure

'client' 카테고리의 다른 글

javascript foreach, map, reduce  (0) 2020.07.01
javascript prototype (프로토타입)  (0) 2020.06.30
javascript execution context (실행 콘텍스트)  (0) 2020.06.28
console.log 변수로 사용하기  (0) 2020.06.19
js call, apply, bind  (0) 2020.06.16