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 루프의 다음 부분을 계속 진행해야 할까요?
迷茫2017-06-28 09:29:39
귀하의 재귀는 for 루프 안에 있습니다. 따라서 for 루프에 들어갈 때. 재귀가 먼저 실행되고 재귀가 결과를 반환할 때까지 for 루프로 돌아가 실행을 계속합니다.