CODEDRAGON ㆍDevelopment/JavaScript, jQuery, ...
클로저
· 내부 함수 사용시 지역변수를 남겨두는 것으로
· 지역변수는 함수가 실행될 때 생성되고 함수가 종료될 때 사라지는데
· 내부함수를 만들고 내부함수를 감싸고 있는 함수의 지역변수를 내부함수에서 호출할 때 내부함수를 감싸고 있는 외부 함수가 종료되었지만 내부함수에서 지역변수를 호출할 수 있도록 지역변수를 남겨두는 현상입니다.
클로저 특징
· 종료된 외부 함수의 변수를 참조하는 함수
· 지역 변수를 남겨두는 현상
· 함수 outerFunction()로 인해 생성된 공간
· 함수 outerFunction() 내부의 변수들이 살아있는 현상(output )
· 리턴되는 함수 자체
· 함수가 종료된 이후 살아남은 지역 변수
익명함수를 반환하는 함수
function outerFunction(name) { var output = 'Hello ' + name + '... !'; return function() { alert(output); }; } outerFunction('kevin')(); |
클로저의 사용
· 함수 안에 있는 변수는 지역 변수이므로 외부에서 사용할 수 없습니다.
· 클로저를 사용하면 이 규칙을 위반하여 지역변수를 사용할 수 있도록 할 수 있습니다.
· 익명함수를 반환하는 함수에 지역변수가 있으면 익명함수는 클로저 함수로서 지역변수를 가져다 쓸 수 있습니다.
지역변수 규칙에 위배
· f()종료 하여 결과값이 반환되었는데 f()에 있는 지역 변수 var n가 호출됩니다.
· 클로저 현상(내부 함수 사용시 지역변수를 남겨두는 것으로
· 지역변수는 함수가 실행될 때 생성되고 함수가 종료될 때 사라지는데
· 내부함수를 만들고 내부함수를 감싸고 있는 함수의 지역변수를 내부함수에서 호출할 때
· 내부함수를 감싸고 있는 외부 함수가 종료되었지만 내부함수에서 지역변수를 호출할 수 있도록 지역변수를 남겨두는 현상)
'Development > JavaScript, jQuery, ...' 카테고리의 다른 글
eval(String) (0) | 2017.11.16 |
---|---|
대화 상자를 출력하는 대표적인 내장 함수 - alert(), prompt(), confirm() (0) | 2017.11.15 |
즉시 실행 함수(immediate functions), 즉시 실행 함수 형식 (0) | 2017.11.15 |
디폴트 매개변수(default parameter) (0) | 2017.11.15 |
자바스크립트 함수 정의 방법 (0) | 2017.11.15 |