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迴圈的下一個嗎?
你的遞歸是在for迴圈裡面。所以當你進入for循環後。是先執行遞歸的,直到這個遞歸有結果返回,你才回到for迴圈繼續執行。
都是同步的,一定遞迴執行完了才進去下一個for迴圈