다음과 같이 변수에 재귀 함수를 만들 수 있습니다.
/* Count down to 0 recursively.
*/
var functionHolder = function (counter) {
output(counter);
if (counter > 0) {
functionHolder(counter-1);
}
}
이와 함께, functionHolder(3);
출력 할 것이다 3
2
1
0
. 다음을 수행했다고 가정 해 보겠습니다.
var copyFunction = functionHolder;
copyFunction(3);
3
2
1
0
위와 같이 출력 됩니다. 그런 functionHolder
다음 다음과 같이 변경 하면 :
functionHolder = function(whatever) {
output("Stop counting!");
그런 functionHolder(3);
줄 것 Stop counting!
예상대로.
copyFunction(3);
이제는 (자체가 가리키는) 함수가 아니라 3
Stop counting!
참조하는대로 제공합니다 functionHolder
. 이것은 어떤 상황에서는 바람직 할 수 있지만 함수를 보유하는 변수가 아닌 자체 호출하도록 함수를 작성하는 방법이 있습니까?
즉, 전화를 걸 때이 모든 단계를 거치면서 여전히 제공되도록 회선 만 변경할 수 있습니까? 시도 했지만 오류가 발생 합니다.functionHolder(counter-1);
3
2
1
0
copyFunction(3);
this(counter-1);
this is not a function