为什么当我返回一个函数时,我不能在它下面有更多的代码
样品
<script language="javascript">
return compute();
alert(1);
</script>
警报不起作用
答案 0 :(得分:3)
警报不起作用
听起来对我不错。我将此代码设想为:
(function() {
return compute();
alert(1);
})();
答案 1 :(得分:2)
return
语句的功能是双重的。首先,它返回一个值(在这种情况下,指向函数的指针)。其次,它是管理control flow,也就是说,它告诉浏览器执行该代码以离开该函数,并将执行控制返回到调用示例脚本的代码段。
换句话说,试图返回一个值,同时还希望继续执行,这使得浏览器对下一步做什么不明确。
如果要翻转两行(先提醒,然后返回一个值),这将导致两行都被执行。
This tutorial也可能提供进一步的见解。
此外,正如Rob W和Kris 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);
}
}