[CookBook] 재사용 가능한 JS 함수 작성하기





Chapter 6. 재사용 가능한 JS 함수 작성하기




1. 함수의 종류



1.1. 기명 함수

function 키워드 및 명시적인 함수명을 사용하여 생성한다. 또한, JS 실행 시 생성되며, 객체 맴버에 접근 가능하다.

 

1.2 익명 함수 or 함수 생성자

함수 생성자는 new 연산자 및 Function 생성자를 통해 생성한다.

 

1.3 함수 리터럴

다른 JS 객체(String, Number 등)와 마찬가지로 함수도 객체와 리터럴 모두 사용할 수 있다. 또한,  JS 실행 시 생성되며, 객체 맴버에 접근 가능하다.







참고 사이트:


자바스크립트 함수 유효범위(Scope) 관리 및 Closer

http://mohwaproject.tistory.com/entry/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%ED%95%A8%EC%88%98-%EC%9C%A0%ED%9A%A8%EB%B2%94%EC%9C%84Scope-%EA%B4%80%EB%A6%AC


자바스크립트 강좌2 - 데이터 타입값

http://mohwaproject.tistory.com/entry/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B0%95%EC%A2%8C-2-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%83%80%EC%9E%85%EA%B0%92






2. 함수에 복잡한 데이터 객체 전달하기



JS 함수의 인수는 "문자열"이나 "숫자"와 같은 "값 타입"(call by value)일 수도 있고 배열과 같은 "객체"일 수도 있다.


또한, 전달된 인수가 값 타입(call by value)인 경우 해당 데이터의 복사본이 전달되며, 그와 반대로 객체는 참조(call by reference)로 전달되기 때문에 함수 안에서 전달된 인수 변경 시 호출한 프로그램에도 반영된다.







3. 재귀 알고리즘 구현하기





참고사이트:


자바스크립트 재귀 함수:

http://mohwaproject.tistory.com/search/%EC%9E%AC%EA%B7%80






4. 상태를 기억하는 함수


아래 코드와 같이 바깥 함수(outer)의 반환 값으로 내부 함수(inner)설정 시 내부 함수는 바깥 함수 유효범위 안의 모든 변수(name)를 포함한다.


즉, 클로저 발생으로 인해 포함된 바깥 함수 유효범위 안의 변수가 해당 메모리에서 소멸되지 않는 현상이 일어나며, 그 현상을 이용하여 정적 데이터를 기억할 수 있는 함수를 작성한다.






5. 메모제이션 패턴을 통한 프로그램 성능 개선


함수에 프로퍼티를 추가하여 결과(반환 값)를 캐시하면 다음 호출 시점에 복잡한 연산을 반복하지 않을 수 있다. 


이런 활용 방법을 "메모이제이션 패턴" 이라 한다.







6. 익명 함수를 사용해서 전역 변수 감싸기


JS 클로저를 이용해 익명 함수의 지역 변수(i)를 마치 전역 변수와 같이 사용할 수 있다.