我有一个函数parent
,调用child
,然后在otherStuff
内执行其他操作:
function parent() {
child();
otherStuff();
}
是否可以修改child
(并按原样保留parent
),以便child
调用parent
在child
返回后立即返回?这可以在EcmaScript 6中实现吗?
答案 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
结构的假设。