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