递归函数 Recursive Functions
问题 Problem
你想在函数体中调用函数本身。
You want to call a function from within that same function.
方法 Solution
使用一个具名函数:
With a named function:
ping = ->
console.log "Pinged"
setTimeout ping, 1000
在匿名函数中,使用@arguments.callee@:
With an unnamed function, using @arguments.callee@:
delay = 1000
setTimeout((->
console.log "Pinged"
setTimeout arguments.callee, delay
), delay)
讨论 Discussion
尽管arguments.callee
允许在一个匿名函数中使用递归,并且在内存密集型的程序中可能会有优势,但是具名函数依然有其用途,可以让代码更加清晰,容易维护。
While arguments.callee
allows for the recursion of anonymous functions and might have the advantage in a very memory-intensive application, named functions keep their purpose more explicit and make for more maintainable code.