为什么当我返回一个函数时,它下面不能有更多的代码
示例
<script language="javascript">
return compute();
alert(1);
</script>警报将不起作用
发布于 2011-12-10 02:50:56
警报将不起作用
在我看来是对的。我把这段代码想象成:
(function() {
return compute();
alert(1);
})();发布于 2011-12-10 02:51:33
return语句的功能有两个。首先,它返回一个值(在本例中,是一个指向函数的指针)。其次,它管理control flow,也就是说,它告诉执行该代码的浏览器退出该函数,并将执行控制权返回给调用示例脚本的那段代码。
换句话说,试图返回一个值,同时还期望继续执行,这会使浏览器对下一步做什么不明确。
如果您翻转这两行(首先警告,然后返回一个值),将导致这两行都被执行。
This tutorial还可以提供进一步的洞察力。
此外,正如Rob W和Kris Krause所指出的,您只能从函数return,但是您所显示的代码并没有包装在函数中。
发布于 2011-12-10 03:21:13
在函数/闭包中,您可以将代码放在return语句下面。具体地说,将被提升的函数声明,以便它们可供返回上方的代码使用。我一直在使用这个“模式”,下面是我当前代码库中的一个小示例:
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);
}
}https://stackoverflow.com/questions/8450204
复制相似问题