使父函数返回的函数

时间:2013-01-11 10:31:04

标签: javascript function

我有一个函数parent,调用child,然后在otherStuff内执行其他操作:

function parent() {
    child();

    otherStuff();
}

是否可以修改child(并按原样保留parent),以便child调用parentchild返回后立即返回?这可以在EcmaScript 6中实现吗?

1 个答案:

答案 0 :(得分:0)

执行此操作的

错误方法是在child中引发异常,该异常将冒出parent然后冒充到原来的来电者。这种方法期望parent的原始调用者能够捕获异常。

function originalCaller() {
  try {
    parent();
  }
  catch(e) {}
}

function parent() {
  child();
  otherStuff();
}

function child() {
  throw 0;
}

function otherStuff() {
  // other stuff
}

您希望保留parent,对吗? 所以,丑陋的方式是让child暂时修改otherStuff

function child() {
  _otherStuff = otherStuff;
 otherStuff = function() { otherStuff = _otherStuff; }
}

这种方式otherStuff无法执行任何一次,然后返回原始状态。同样,它不仅是完全丑陋,而且是对parent结构的假设。