"返回"声明

时间:2015-12-02 19:21:32

标签: 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) {
            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;
}

我想知道为什么return语句没有写成:

return results.push(played);

有什么好处吗?如果是这样,为什么以及何时应该这样写呢?

2 个答案:

答案 0 :(得分:1)

那是因为recurse仅用于其副作用(即它对results的作用),而不是它的价值。返回仍然是必要的,以便递归达到最低点,但除此之外,没有理由从recurse返回任何内容。

答案 1 :(得分:1)

return;return undefined;相同,所以基本上不返回任何内容 这与在没有return语句的情况下完成函数的效果相同。

return results.push(played);会返回results.push(played);的结果,该结果可能未定义。

如果忽略函数recurse的返回值,则没有区别,函数rockPaperScissors就是这种情况。