function cloneObject(obj){
var o = obj.constructor === Array ? [] : {};
for(var i in obj){
if(obj.hasOwnProperty(i )){
o[i] = typeof obj[i] === "オブジェクト" ? cloneObject(obj[i]) : obj[i];
}
}
return o;
}
上記のコードはオブジェクトのディープクローンを実装するもので、オブジェクトの属性値がオブジェクトの場合、関数は再帰的に実行されます。つまり、o[i] = typeof obj[i]のみです。 === " object" ? cloneObject(obj[i]) : obj[i]; typeof obj[i] === "object" が成立すると cloneObject(obj[i]) が実行されます。 cloneObject(obj[i]) を実行すると、cloneObject 関数が再度入力されてコードが実行されますが、for in ループはまだ終了していないことを理解しています。最初に cloneObject を実行してこれを終了し、次に次の処理に進むべきでしょうか。 for ループのステップ?
再帰は for ループ内にあります。したがって、for ループに入ると。最初に再帰が実行され、再帰が結果を返すまで、for ループに戻って実行を継続します。
これらはすべて同期です。再帰的実行は、次の for ループに入る前に完了する必要があります。