所以当我输入:
function x(z) {
if (z !== 'y') return ("There is an error!")
z = z.replace(/y/g, 'Canada');
return x(z);
}
x('y')
我收到make“有错误”。但我想说它是'加拿大'。
我的代码出了什么问题?
谢谢!
答案 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'调用函数。