// 이름 없는 익명 함수가 자신을 참조 하는 변수가 없을 경우 arguments.callee에 의해 함수가 자신을 참조할수 있다.
// ES5 "use strict" 엄격모드에선 실행되지 않는다.
// 다음은 0부터 n까지의 합을 구하는 재귀 함수이다.
(function(num){
console.log(num);
if (num === 0) {
return num;
}
else {
return num + arguments.callee(num-1); // 익명함수 재귀호출
}
})(5);

// setTimeout에서 익명함수 재귀호출
var arr = [1, 2, 3, 4, 5, 6];
var copy = arr.slice(); // 배열 복사
setTimeout(function() {
console.log(copy);
var el = copy.shift(); // 복사한 배열에서 요소 하나를 가져온다.
console.log(el);
// 배열에 남은 요소가 있다면..
if(copy.length > 0) {
arguments.callee(); // 익명함수 재귀호출
} else {
// 완료 작업
}
}, 20);


반응형
Posted by 힘없는염소