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