javascript - js中遞歸與for迴圈同時發生的時候,程式碼的執行順序是怎麼樣的?
仅有的幸福
仅有的幸福 2017-06-28 09:27:39
0
2
925

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迴圈的下一個嗎?

仅有的幸福
仅有的幸福

全部回覆(2)
迷茫

你的遞歸是在for迴圈裡面。所以當你進入for循環後。是先執行遞歸的,直到這個遞歸有結果返回,你才回到for迴圈繼續執行。

小葫芦

都是同步的,一定遞迴執行完了才進去下一個for迴圈

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板