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

return语句javascript
EN

Stack Overflow用户
提问于 2011-12-10 02:47:29
回答 3查看 355关注 0票数 1

为什么当我返回一个函数时,它下面不能有更多的代码

示例

代码语言:javascript
复制
<script language="javascript">
    return compute();
    alert(1);
</script>

警报将不起作用

EN

回答 3

Stack Overflow用户

发布于 2011-12-10 02:50:56

警报将不起作用

在我看来是对的。我把这段代码想象成:

代码语言:javascript
复制
    (function() {
      return compute();
      alert(1);
    })();
票数 3
EN

Stack Overflow用户

发布于 2011-12-10 02:51:33

return语句的功能有两个。首先,它返回一个值(在本例中,是一个指向函数的指针)。其次,它管理control flow,也就是说,它告诉执行该代码的浏览器退出该函数,并将执行控制权返回给调用示例脚本的那段代码。

换句话说,试图返回一个值,同时还期望继续执行,这会使浏览器对下一步做什么不明确。

如果您翻转这两行(首先警告,然后返回一个值),将导致这两行都被执行。

This tutorial还可以提供进一步的洞察力。

此外,正如Rob WKris Krause所指出的,您只能从函数return,但是您所显示的代码并没有包装在函数中。

票数 2
EN

Stack Overflow用户

发布于 2011-12-10 03:21:13

在函数/闭包中,您可以将代码放在return语句下面。具体地说,将被提升的函数声明,以便它们可供返回上方的代码使用。我一直在使用这个“模式”,下面是我当前代码库中的一个小示例:

代码语言:javascript
复制
function msgHandlers() {
    var scope
        ,msgs;

    return {
        SET_CONTEXT: function(context) {
            scope = context.scope;
            msgs = context.messages;
        }

        ,SUBSCRIBE_ALL: function() {
            me.subscribe(scope, msgs.ITEM_PINNED, itemPinnedHandler);
        }
    }

    function itemPinnedHandler(record) {
        loadInventoryRecord(record);    
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8450204

复制
相关文章

相似问题

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