Function 01

함수 선언문의 역행

함수 선언문에서 선언한 함수는 선언한 행보다 앞에서도 호출할 수 있습니다. 다음의 구체적인 예를 봅시다. 다음은 함수 스코프 안에 포함된 코드의 예이지만 전역 스코프에서도 해당 함수를 호출할 수 있습니다.


							function doit() {
								
								// 함수 fn을 선언한 지점보다 앞에서 호출
								fn(); 
								function fn() {
									$.print("called!");
								};
							}
							doit();					
						

이 같은 동작 방식은 함수 리터럴 식으로 함수를 정의한 경우와 다릅니다. 아래의 코드는 위와 비슷하지만 에러가 발생합니다.

							function doit2() {
								fn();
								var fn = function () {
									$.print("called2!");
								};
							}
							doit2();
							
							//결과 TypeError: fn is not a function