我试图用另一个字符串替换字符串

时间:2016-04-04 13:52:26

标签: javascript

所以当我输入:

function x(z) {
    if (z !== 'y') return ("There is an error!")

    z = z.replace(/y/g, 'Canada');

    return x(z);
}

x('y')

我收到make“有错误”。但我想说它是'加拿大'。

我的代码出了什么问题?

谢谢!

5 个答案:

答案 0 :(得分:7)

你在那里不必要地进行recursive电话,

function x(z) {
  if (z !== 'y') return ("There is an error!")
  z = z.replace(/y/g, 'Canada');
  return z;
}

在您的背景下根本不需要。

答案 1 :(得分:1)

我认为这就是你想要做的。

function x(z) {
    if (z !== 'y') return ("There is an error!")

    z = z.replace(/y/g, 'Canada');

    return z;
}

alert(x('y')); // Canada

答案 2 :(得分:0)

删除对x(z)的不必要的调用。见下文

function x(z) {
    if (z !== 'y') return ("There is an error!");

    z = z.replace(/y/g, 'Canada');

    return z; // changed from return x(z), unnecessary recursion
}

console.log(x('y'));

答案 3 :(得分:0)

因为z在第二次执行递归时已经被Canada替换了。顺便说一下,在你的情况下没有必要使用正则表达式。

function x(z) {
    if (z !== 'y') return ("There is an error!")
    z = z.replace('y', 'Canada');
}
x('y')

答案 4 :(得分:0)

这段代码完全按照你所说的去做。

你说:返回“有错误!”如果var z不等于'y',否则使用不等于'y'的值调用相同的函数。

然后你用'y'调用函数。