parentを呼び出す関数がありchild、内部で他の処理を実行しますotherStuff。
function parent() {
child();
otherStuff();
}
コールがリターンの直後に戻るように変更child(およびそのままにするparent)することは可能ですか?これはEcmaScript6で可能ですか?childparentchild
parentを呼び出す関数がありchild、内部で他の処理を実行しますotherStuff。
function parent() {
child();
otherStuff();
}
コールがリターンの直後に戻るように変更child(およびそのままにするparent)することは可能ですか?これはEcmaScript6で可能ですか?childparentchild
これを行うための悪い方法は、で例外をスローすることです。これにより、元の呼び出し元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