function heartBeat(context) {
context.data.timer = setTimeout(() => {
doSomeThing();
heartBeat(context);
}, 1000);
}
heartBeat(this); //this是一个类似Vue实例的东西
其中的context
是一个类似于Vue实例
的东西。请教这个递归有问题吗?需不需要尾递归优化?
这根本不是递归,更扯不上什么尾递归优化,就是个回调函数
名词这东西理解了才有用
尾递归的判断条件是,该函数的最后一句是递归调用。
题中 heartBeat 函数中的最后一句是 context.data.timer = ...
这个赋值语句,不是递归调用它自己。
下面这种形式才是尾递归。
function heartBeat(context) {
// 做一些奇怪的事情,跟 heartBeat 无关
heartBeat(context);
}
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
这个不是尾递归。也无法进行尾递归优化。这只是普通的递归。