함수 정의와 동시에 즉시 호출되는 함수로 단 한번만 호출되며 다시 호출할 수 없음
(function() {
console.log('익명 즉시 실행함수! 함수 정의와 동시에 호출!');
})();
(function hello(name){
console.log('기명 즉시 실행함수! 함수 정의와 동시에 호출!');
console.log(`${name}님 안녕하세요!`);
})('홍길동');
익명 함수도 선언만 해서 호출되는 것이 아닌 뒤에 인자를 던져줘야 호출이 된다.
함수가 자기 자신을 호출하는 것을 재귀호출이라고 함
// 팩토리얼 값을 구해보자
function factorial(n) {
if(n <= 1) return 1;
return n * factorial(n - 1);
}
console.log(factorial(1)); // 1! = 1
console.log(factorial(2)); // 2! = 2 * 1
console.log(factorial(3)); // 3! = 3 * 2 * 1
console.log(factorial(4)); // n! = n * (n-1) * (n-2) * ...
재귀 함수는 반복처리를 반복문 없이 구현할 수 있다는 장점이 있지만 무한 반복에 빠질 위험이 있고 이로 인해 스택 오버플로 에러를 발생시킬 수 있으므로 주의
함수 내부에 정의 된 함수를 중첩 함수 또는 내부 함수라고 함
중첩 함수를 포함하는 함수를 외부 함수라고 한다.
일반적으로 중첩 함수는 자신을 포함하는 외부 함수를 돕는 헬퍼(helper) 함수의 역할을 함
function outer() {
var outerVal = '외부 함수';
function inner() {
var innerVal = '내부 함수';
console.log(outerVal, innerVal); // 외부 함수 내부 함수(출력)
}
inner();
}