자바스크립트에 대해 공부한 내용을 정리

추후 필요 시 참고 목적으로 작성함


자바스크립트에서 var 사용 시 블록 단위 scope는 없다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
var g = "GLOBAL";
function test() {
    console.log(g);
    if (false) {
        var g = "TEST";   
    }
    console.log(g);
}
test();
</script>
</head>
<body>
    
</body>
</html>
cs

결과 : undefined, undefined

설명: 호이스팅은 if 조건문 다 필요 없이 그냥 var 가 있으면 선언을 한다(값은 X)


클로저 개념

- 특정 함수 내의 지역 변수를 외부에서 접근할 수 있도록 하는 내부 함수

- 외부함수 내 내부함수가 전역에서 참조되고, 내부 함수가 외부 함수의 지역변수를 이용할 수 있게 되는 현상 또는 그 내부함수 


클로저 케이스

- 내부 함수가 리턴되는 경우

- 내부 함수가 전역 변수에 할당되는 경우



클로저로 자바의 캡슐화 같은 개념을 만들 수 있다.

직접 접근을 할 수 없지만 클로저를 이용해서 내부의 변수를 사용할 수 있다.


클로저에 의해서 접근 되는 변수는 자유변수(free variable)라고 한다.


so, 클로저의 목적은 캡슐화


 캡슐화 용도로 사용할 때만 사용할 것. 가비지컬렉터로 메모리가 회수 되지 않으니 성능 측면에서도 적절한 상황에서 사용해야 한다.

ㅁ 클로저와 jQuery

jQuery는 클로저를 이용해 개발 된 부분이 많다.



+ Recent posts