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

时间:2019-04-21 20:47:06

标签: javascript string function

我有字符串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时返回否 101000时返回undefined

2 个答案:

答案 0 :(得分:3)

您需要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

答案 1 :(得分:0)

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";
    }
  }
}