JavaScript 1.2 이전에는 함수 정의가 최상위 전역 코드에서만 허용되었지만 JavaScript 1.2에서는 다른 함수에 함수 정의를 중첩할 수 있습니다.
여전히 기존 함수 정의는 표시되지 않고 조건 내에서 반복되거나 제한될 수 있습니다. 함수 정의에 대한 이러한 제한 사항은 함수 선언 및 함수 명령문에만 적용됩니다.
함수 리터럴(JavaScript 1.2에 도입된 또 다른 기능)은 모든 JavaScript 표현식에 나타날 수 있습니다. 즉, if else 문 안에 나타날 수 있습니다.
예:
다음은 두 가지 중첩 함수의 예입니다. 약간 혼란스러울 수 있지만 완벽하게 작동합니다.
<script type="text/javascript"> <!-- function hypotenuse(a, b) { function square(x) { return x*x; } return Math.sqrt(square(a) + square(b)); } //--> </script>
참고: 여기서는 수학 클래스의 sqrt 함수를 사용하고 있습니다.
이제 이 함수는 다음과 같은 일반적인 방법으로 호출할 수 있습니다.
<script type="text/javascript"> <!-- hypotenuse(1, 2); // This will produce 2.2360 //--> </script>