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