首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"return“语句

"return“语句
EN

Stack Overflow用户
提问于 2015-12-03 03:21:32
回答 2查看 37关注 0票数 0

我有一个关于控制流中返回语句本身的问题。

代码语言:javascript
复制
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;
}

我想知道为什么返回语句不是这样写的:

代码语言:javascript
复制
return results.push(played);

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

EN

回答 2

Stack Overflow用户

发布于 2015-12-03 03:24:50

这是因为recurse只是为了它的副作用(即,它对results所做的事情),而不是它的价值。返回仍然是必要的,这样递归才能走出谷底,但除此之外,没有理由从recurse返回任何东西。

票数 1
EN

Stack Overflow用户

发布于 2015-12-03 03:26:21

return;return undefined;相同,所以基本上不返回任何内容。

它的效果与函数在没有返回语句的情况下结束时的效果相同。

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

如果忽略函数recurse的返回值,就没有区别,就像函数rockPaperScissors中的情况一样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34051203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档