09 유효범위 (scope)
10 클로저 (closure)
11 콜백
12 모듈
13 연속호출 (Cascade)
14 커링 (Curry)
15 메모이제이션 (memoization)
09 유효범위
유효범위는 변수와 매개변수의 접근성과 생존 기간을 제어.
- 이름 충돌 문제를 덜어주고 자동으로 메모리 관리.
- C언어 유형의 구문을 가진 언어는 모두 블록 유효범위가 있다.
- 블록 내부에서 선언된 변수는 외부에서 접근 불가. 블록이 끝나면 변수 해제
- 하지만 자바스크립트는 블록 유효범위가 없다.
- 함수 유효범위는 있다.
자바스크립트는 모든 변수를 함수 첫 부분에 선언하는 것이 가장 최선의 방법이다.
10 클로저
- 내부함수에서는 외부함수의 변수들에 접근 가능하다. (this와 arguments는 예외이다.)
외부함수보다 내부함수가 더 오래 유지 될 수 있다. 이것을 클로저라 한다.
- 내부함수는 외부함수 변수의 복사값을 갖는 것이 아니라 해당 변수 그 자체에 접근 권한을 가진다.
- 즉 실제 변수에 접근. 주의해야 한다.
11 콜백
함수는 비연속적인 이벤트를 다루는 것을 좀 더 쉽게 할 수 있는 방법을 제공.
12 모듈
- 함수와 클로저를 사용해 모듈 제작 가능.
- 모듈이란 내부상태나 구현 내용을 숨기고 인터페이스를 제공하는 함수나 객체.
- 모듈을 만들기위해 함수를 사용하면 전역변수 사용을 대부분 제가 가능하다.
- 정보 은닉 가능.
- 어플리케이션이나 싱글톤 패턴들을 효과적으로 캡슐화.
13 연속호출
- 자바스크립트의 함수는 this를 반환한다면 연속 호출이 가능하다.
- 같은 객체에 대해 문장 하나로 연속되는 많은 메소드 호출 가능.
- 연속 호출은 매우 표현적인 인터페이스를 제공할 수 있게 한다.
- 한번에 많은 작업을 할 수 있는 인터페이스.
14 커링
커링은 함수와 인수를 결합하여 새로운 함수를 만들 수 있게 한다.
15 메모이제이션
- 불필요한 작업을 피하기 위해서 이전의 연산한 결과를 저장하고 있는 객체
자바스크립트의 객체와 배열은 메모이제이션에 유용하다.
- 반복되는 작업의 양을 현저히 줄일 수 있다.
- 연산이 중복으로 일어나는 작업에 좋을 듯.
참고문헌
1. 더글라스 크락포드, 김명신 『자바스크립트 핵심가이드 javascript The good parts』, 한빛미디어