Javascript ";return";陈述
我对控制流中的return语句本身有一个疑问Javascript ";return";陈述,javascript,return,Javascript,Return,我对控制流中的return语句本身有一个疑问 var rockPaperScissors = function(n) { var rounds = n; var results = []; var weapons = ['rock', 'paper', 'scissors']; var recurse = function(roundsLeft, played) { if( roundsLeft === 0) { r
var rockPaperScissors = function(n) {
var rounds = n;
var results = [];
var weapons = ['rock', 'paper', 'scissors'];
var recurse = function(roundsLeft, played) {
if( roundsLeft === 0) {
results.push(played);
return;
}
for(var i = 0; i<weapons.length; i++) {
var current = weapons[i];
recurse( roundsLeft-1, played.concat(current) );
}
};
recurse(rounds; []);
return results;
}
有什么好处吗?如果是这样,为什么以及什么时候应该这样写呢?这是因为递归只用于它的副作用(即它对结果的作用),而不是它的价值。返回仍然是必需的,这样递归才能见底,但除此之外,没有理由从
recurse
return返回任何内容
与返回未定义相同代码>,因此基本上不返回任何内容。
这与函数在没有返回语句的情况下完成的效果相同
返回结果。推送(播放)
返回results.push(播放)的结果代码>,可能未定义
如果忽略函数的返回值recurse
,则没有区别,在函数rockpaperscraster
中就是这样,您有一个小的语法错误:它应该是recurse(rounds,[])代码>。它应该是逗号而不是分号
return results.push(played);