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

我对控制流中的return语句本身有一个疑问

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);