Javascript 为什么返回一个函数而不是再次运行该函数(递归)?

Javascript 为什么返回一个函数而不是再次运行该函数(递归)?,javascript,function,recursion,Javascript,Function,Recursion,如果我想在满足某个条件时在同一个函数中再次运行我的函数,那么返回该函数与再次调用该函数有什么区别 function myFunc(param) { if (param === "3") { return myFunc(param); } } VS 如果需要返回结果,则需要递归地返回内部调用的结果。例如: 函数事实(n){ 如果(n==0)返回1; 返回n*事实(n-1); } 控制台日志(事实(5))返回myFunc()执行三件事:(1)执行函数myFunc(),(2)当1

如果我想在满足某个条件时在同一个函数中再次运行我的函数,那么返回该函数与再次调用该函数有什么区别

function myFunc(param) {
  if (param === "3") {
     return myFunc(param);
  }
}
VS


如果需要返回结果,则需要递归地返回内部调用的结果。例如:

函数事实(n){
如果(n==0)返回1;
返回n*事实(n-1);
}
控制台日志(事实(5))
返回myFunc()
执行三件事:(1)执行函数
myFunc()
,(2)当1完成时,取结果值并将其指定为当前函数的返回值,以及(3)终止当前函数


调用
myFunc()
仅执行(1)。这就是区别。

您不返回函数,而是返回函数的结果。
return
还会在那里终止函数,然后返回。如果没有它,函数调用后的代码仍然会执行。在这段代码中,没有区别,因为在
返回之后不会发生任何事情,也不会返回其他值。可能会显示一个真实的示例?如果您将“3”传递给它,两者都将堆栈溢出。它们就像无限循环
,而(true){}
使用tco时,反转if语句
param!==“3”
和return
myFunc(param)
它实际上会被编译成一个带有
return
version的无限循环
return
关键字返回后面表达式的任何结果。例如,
return1+1
将向调用者返回
2
。在底部,每个函数都是不可见的
返回undefined
。请注意,您可以返回一个fcuntion,例如
returnmyfunc
但是您没有这样做,而是返回调用函数的结果。由于基本情况不返回任何内容,因此两种情况下的结果都是
undefined
function myFunc(param) {
  if (param === "3") {
     myFunc(param);
  }
}