[JavaScript] 클로저란
프로그래밍/JavaScript2017. 11. 1. 16:14
내부함수
자바스크립트는 함수 안에서 또 다른 함수를 선언할 수 있다.
함수 outter의 내부에는 함수 inner가 정의 되어 있다
클로저(closure)는 내부함수와 밀접한 관계를 가지고 있는 주제다.
function outter(){ function inner(){ var name= 'closerTest'; console.log(name); } inner(); } outter(); // closerTest가 출력된다.
function outter(){ var name= 'closerTest'; function inner(){ console.log(name); } inner(); } outter(); // closerTest 가 출력된다.
내부함수는 외부함수의 지역변수에 접근 할 수 있는데 외부함수의 실행이 끝나서 외부함수가
소멸된 이후에도 내부함수가 외부함수의 변수에 접근 할 수 있다. 이러한 메커니즘을 클로저라고 한다.
클로저란 내부함수가 외부함수의 지역변수에 접근 할 수 있고,
외부함수는 외부함수의 지역변수를 사용하는 내부함수가 소멸될 때까지 소멸되지 않는 특성을 의미한다.
function outter(){ var name = 'closerTest'; return function(){ alert(name); } } inner = outter(); inner(); // closerTest 가 출력된다.