【发布时间】:2013-06-07 19:28:50
【问题描述】:
function MyFunction () {
if (SomeCondition) {
MyInnerFunction(SomeParam);
return;
}
if (SomeOtherCondition) {
MyInnerFunction(SomeOtherParam);
return;
}
if (SomeThirdCondition) {
MyInnerFunction(AnotherParam);
return;
}
function MyInnerFunction(Param) {
// Do some work here
// HERE: I want return from MyFunction
}
}
如您所见,当MyInnerFunction 返回时,下一条要执行的语句是MyFunction 的return 语句。有没有办法消除所有这些返回语句,以便 MyFunction 的返回在 MyInnerFunction 内部执行?
谢谢。
【问题讨论】:
-
不,没有。你想要的是不可能的。内部函数无法控制外部。你可以改用
return MyInnerFunction(AnotherParam);。 -
else if怎么样? -
MyFunction还有其他代码吗?为什么不直接删除所有return;行? -
为什么不直接将返回值添加到调用函数的同一行(并确保内部函数不返回任何内容)?如果你真的想编写一些迟钝的代码来到达你想要的地方而不遵循逻辑堆栈进展,你也可以滥用 try/catch(显然不推荐......除非它真的有意义)。
-
我同意@Prinzhorn,
else if或switch应该可以解决问题。
标签: javascript