웹 개발 메모장
[자바스크립트] 클로저 란? 본문
클로저
지역 변수를 남겨두는 현상 또는 함수로 생성된공간 또는 리턴된 함수 자체 또는 살아남은 지역 변수 등을 클로저라고 합니다.
자바스크립트에서 함수 내부에 선언된 변수는 지역 변수 입니다.
따라서
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 됩니다.
이러한 클로저 개념은 캡슐화 부분에서 중요한 역할을 합니다.
'옛날.. > 자바스크립트' 카테고리의 다른 글
[자바스크립트] 문자열을 코드로 실행시키는 eval() 함수 (0) | 2018.01.03 |
---|---|
[자바스크립트] 타이머 함수(setTimeout, setInterval) (0) | 2018.01.03 |
[자바스크립트] 내부함수 (0) | 2018.01.03 |
[자바스크립트] 가변 인자 함수 (0) | 2018.01.02 |
[자바스크립트] for in / for of 반복문 (0) | 2018.01.02 |
Comments