从内部函数返回外部函数

3
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返回时,下一个要执行的语句是MyFunctionreturn语句。有没有办法消除所有这些return语句,使得MyFunction中的返回在MyInnerFunction内部执行?

谢谢。


2
不,这是不可能的。你想要的是不可能的。内部函数无法控制外部函数。你可以使用 return MyInnerFunction(AnotherParam); 代替。 - gen_Eric
2
else if 怎么样? - Prinzhorn
你的 MyFunction 里面还有其他代码吗?为什么不直接删掉所有的 return; 行呢? - gen_Eric
为什么不在调用函数的同一行添加返回语句(并确保内部函数不返回任何内容)?如果你想要编写一些晦涩难懂的代码,而不是按照逻辑堆栈进展,你也可以滥用 try/catch(显然不推荐...除非它真的有意义)。 - Matt Whipple
1
我同意@Prinzhorn的观点,使用else ifswitch应该可以解决问题。 - Py.
@RocketHazmat:如果我删除多个返回语句,那么所有条件都将在返回之前被评估。 - frenchie
1个回答

3

您可以重新格式化代码,使if条件仅修改参数。然后,您只需在最后使用正确的参数调用您的方法。

function MyFunction () {
   var params; 

   if (SomeCondition)
      params = SomeParam;
   else if (SomeOtherCondition)
      params = SomeOtherParam;
   else if (SomeThirdCondition)
      params = AnotherParam;

   MyInnerFunction(params);
}

不,即使MyInnerFunction执行后,每个“if(Condition)”语句仍然会被执行。我之所以有所有这些返回语句,是因为一旦MyInnerFunction执行,MyFunction立即返回,并且不会评估任何其他if语句。 - frenchie
为什么你不想执行条件语句? - Caleb
因为没有必要,只有一个条件会运行。 - frenchie
你可以将它改为 else if,这样只有一个条件被执行,其他条件都会被跳过。 - Caleb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接