return语句javascript

时间:2011-12-09 18:47:29

标签: javascript

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

样品

<script language="javascript">
    return compute();
    alert(1);
</script>

警报不起作用

3 个答案:

答案 0 :(得分:3)

  

警报不起作用

听起来对我不错。我将此代码设想为:

    (function() {
      return compute();
      alert(1);
    })();

答案 1 :(得分:2)

return语句的功能是双重的。首先,它返回一个值(在这种情况下,指向函数的指针)。其次,它是管理control flow,也就是说,它告诉浏览器执行该代码以离开该函数,并将执行控制返回到调用示例脚本的代码段。

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

如果要翻转两行(先提醒,然后返回一个值),这将导致两行都被执行。

This tutorial也可能提供进一步的见解。

此外,正如Rob WKris Krause所指出的那样,您只能从函数中return,但您显示的代码未包含在函数中。

答案 2 :(得分:0)

在函数/闭包内部,可以在return语句下面包含代码。具体来说,函数声明将被提升,以便它们可供返回上方的代码使用。我用这个&#34;模式&#34;所有这些,这是我当前代码库中的一个小例子:

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