JavaScript递归返回中间结果而不是最终结果

JavaScript递归返回中间结果而不是最终结果,javascript,recursion,Javascript,Recursion,我有一段JavaScript代码,其中rec()函数是自己调用的。此代码的目的是循环遍历类似HTML的文本,并替换所有出现的正则表达式“IMG(.*)tid” 处理完字符串后,它应该在“newText”变量(第5行)中输出字符串的最终版本 var text=''; 警报(“源文本:”+文本); var newText=rec(text); 警报(“最终源文本:“+newText”); 功能记录(str){ 变量i=str.search(“IMG(.*)tid”); 警报(“i的值:+i”);

我有一段JavaScript代码,其中rec()函数是自己调用的。此代码的目的是循环遍历类似HTML的文本,并替换所有出现的正则表达式“IMG(.*)tid”

处理完字符串后,它应该在“newText”变量(第5行)中输出字符串的最终版本

var text='

'; 警报(“源文本:”+文本); var newText=rec(text); 警报(“最终源文本:“+newText”); 功能记录(str){ 变量i=str.search(“IMG(.*)tid”); 警报(“i的值:+i”); 如果(i>-1){ str=str.replace(“IMG”、“BLA”); 警报(“修改的源文本:“+str”); rec(str); } 返回str;
}
当您从rec中再次运行rec时,您没有对返回的结果执行任何操作。您需要将其更改为
str=rec(str)

当您从rec中再次运行rec时,您不会对返回的结果执行任何操作。您需要将其更改为
str=rec(str)

您需要返回
rec
的值

function rec(str) {
  var i = str.search("IMG(.*)tid");
  alert("value of i: " + i);
  if (i > -1) {
    str = str.replace("IMG", "BLA");
    alert("modified source text: " + str);
    return rec(str);
  }
  return str;
}

您需要返回
rec
的值

function rec(str) {
  var i = str.search("IMG(.*)tid");
  alert("value of i: " + i);
  if (i > -1) {
    str = str.replace("IMG", "BLA");
    alert("modified source text: " + str);
    return rec(str);
  }
  return str;
}

我不知道您是否正在研究递归或类似的东西,但是:您知道您可以使用RegExp解决这个特定问题吗?为什么不返回递归调用的结果?Ie
return rec(str)
谢谢@MarcoS,是的,在这种情况下,我只是想了解为什么这个递归会这样。谢谢@CrescentFresh指出这一点,因为它也解决了这个问题。我不知道你是否在研究递归或类似的东西,但是:您知道可以使用RegExp解决这个特定问题吗?为什么不返回递归调用的结果?Ie
return rec(str)
谢谢@MarcoS,是的,在这种情况下,我只是想了解这种递归行为的原因。谢谢@CrescentFresh指出这一点,因为它也解决了这个问题。aargh duh是的,你是正确的。我真是太傻了。谢谢你指出。是的,你说得对。我真是太傻了。谢谢你指出这一点。