자바스크립트에 대해 공부한 내용을 정리
추후 필요 시 참고 목적으로 작성함
자바스크립트에서 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는 클로저를 이용해 개발 된 부분이 많다.
'문돌이의 IT > JavaScript' 카테고리의 다른 글
자바스크립트 디자인패턴 참고자료 (0) | 2018.09.04 |
---|---|
자바스크립트 객체(javaScript Object) (0) | 2018.09.03 |
자바스크립트 함수 & 실행 컨텍스트 (0) | 2018.09.01 |
자바스크립트 데이터타입 & 변수 정리 (0) | 2018.08.31 |
자바스크립트 식별자와 규칙 (0) | 2018.08.26 |