我需要覆盖函数的一些行为,在它调用其他函数之后。问题是这个父函数是一个库,我不想改变它,所以像做一些标志或这个函数的另一个改变这样的解决方案不是很好。我知道我在函数中有一个可以更改的调用者对象,所以也许我可以用它弄清楚。这是示例:
function parent()
{
console.log("some need stuff");
some.handler.function.from.config.that.i.can.change();
console.log("need omit this right till the end");
}
function child()
{
console.log("need to somehow stop evaluation of " + child.caller + " function");
}
作为一名 ruby 程序员,我知道有 lambda 表达式,您可以使用它从闭包的内部范围终止计算。但我不确定如何从 javascript 执行此操作。
最佳答案
您不能直接这样做。 (此外 .caller
已过时)
但是你可以使用一个肮脏的技巧:
try{
parentFunction();//calls child
}catch(e){
//done
}
function child(){
doWhatever();
throw new Error("this will hopefully propagate");
}
Fiddle
这仅在假设父级在调用子级时自身未捕获异常的情况下才有效。
此外,使用异常进行流量控制通常不是一个好主意。将其用作最后的手段。
关于javascript - 如何在javascript中终止父函数的执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17383852/