検索

ホームページ  >  に質問  >  本文

javascript - jsで再帰とforループが同時に発生した場合、コードの実行順序はどうなりますか?

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 ループのステップ?

仅有的幸福仅有的幸福2775日前939

全員に返信(2)返信します

  • 迷茫

    迷茫2017-06-28 09:29:39

    再帰は for ループ内にあります。したがって、for ループに入ると。最初に再帰が実行され、再帰が結果を返すまで、for ループに戻って実行を継続します。

    返事
    0
  • 高洛峰

    高洛峰2017-06-28 09:29:39

    これらはすべて同期です。再帰的実行は、次の for ループに入る前に完了する必要があります。

    返事
    0
  • キャンセル返事