찾다

 >  Q&A  >  본문

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] === "object" ? 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 루프의 다음 부분을 계속 진행해야 할까요?

仅有的幸福仅有的幸福2776일 전941

모든 응답(2)나는 대답할 것이다

  • 迷茫

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

    귀하의 재귀는 for 루프 안에 있습니다. 따라서 for 루프에 들어갈 때. 재귀가 먼저 실행되고 재귀가 결과를 반환할 때까지 for 루프로 돌아가 실행을 계속합니다.

    회신하다
    0
  • 高洛峰

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

    모두 동기식입니다. 다음 for 루프에 들어가기 전에 재귀 실행이 완료되어야 합니다

    회신하다
    0
  • 취소회신하다