웹 개발 메모장

[자바스크립트] 클로저 란? 본문

옛날../자바스크립트

[자바스크립트] 클로저 란?

도로롱주 2018. 1. 3. 09:09




클로


지역 변수를 남겨두는 현상 또는 함수로 생성된공간 또는 리턴된 함수 자체 또는 살아남은 지역 변수 등을 클로저라고 합니다.


자바스크립트에서 함수 내부에 선언된 변수지역 변수 입니다.


따라서


1
2
3
4
5
6
7
function test(arg) {
    var str = arg;
    return str;
}
 
test('hahaha');
alert(str);
cs


위와 같은 코드에서 test 내부에서 선언된 str 이라는 변수는 test 함수가 호출될 때 생성되고 호출이 완료되면 사라지기 때문에 alert 에서 str 을 접근할 수 없어 오류가 있는 코드입니다.



하지만 이를 위반하는 경우가 있는데 그러한 경우, 현상을 클로저 라고 부릅니다.


1
2
3
4
5
6
7
8
9
function test(arg) {
    var str = arg;
    return function (){
        alert(str);
    };
}
 
var f = test('hahaha');
f();
cs


위와 같은 코드를 실행하면 아래처럼 hahaha alert 됩니다.




이러한 클로저 개념은 캡슐화 부분에서 중요한 역할을 합니다.



Comments