繁体   English   中英

代码返回未定义而不是返回值

[英]Code returns undefined instead of return value

我有字符串101000或1010100,其中我尝试使用功能remove data递归替换100。 当字符串替换为值100时,函数removeata应该在字符串为空时返回“是”,而在字符串非空时返回“否”。

它对于字符串1010100正常工作。它返回“ no”,但对于字符串101000返回空则不返回。

 console.log(removedata("1010100")); console.log(removedata("101000")); function removedata(data) { data = data.replace("100", ""); if (data.length == 0) { return "yes"; } else { if (data.indexOf("100") > -1 && data.length > 0) { removedata(data); } else { return "no"; } } } 

当1010100时返回no,但当101000时返回undefined

您需要return递归调用:

 console.log(removedata("1010100")); console.log(removedata("101000")); function removedata(data) { data = data.replace("100", ""); if (data.length == 0) { return "yes"; } else { if (data.indexOf("100") > -1 && data.length > 0) { return removedata(data); } else { return "no"; } } } 

现在,它为第二个返回yes ,因为所有100 s已被删除并且字符串为空。

function removedata(data) {
  data = data.replace("100", "");
  if (data.length == 0) {
    return "yes";
  } else {
    if (data.indexOf("100") > -1 && data.length > 0) {
      removedata(data);                                     // This branch does not return anything
    } else {
      return "no";
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM