最佳答案
我可以在变量中创建一个递归函数,如下所示:
/* 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
。