成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - js中遞歸與for循環(huán)同時(shí)發(fā)生的時(shí)候,代碼的執(zhí)行順序是怎樣的?

瀏覽:186日期:2023-05-02 14:36:50

問題描述

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; } 以上代碼是實(shí)現(xiàn)對(duì)象的深度克隆,當(dāng)對(duì)象的屬性值是一個(gè)對(duì)象的時(shí)候,就遞歸執(zhí)行函數(shù),也就是只想到o[i] = typeof obj[i] === 'object' ? cloneObject(obj[i]) : obj[i]; 的時(shí)候,當(dāng)typeof obj[i] === 'object'成立是,執(zhí)行cloneObject(obj[i]),我不理解的是,當(dāng)執(zhí)行cloneObject(obj[i])時(shí),再次進(jìn)入cloneObject函數(shù)執(zhí)行代碼,但是for in 循環(huán)還沒結(jié)束啊,那是先執(zhí)行cloneObject完這個(gè),再繼續(xù)for循環(huán)的下一個(gè)嗎?

問題解答

回答1:

你的遞歸是在for循環(huán)里面。所以當(dāng)你進(jìn)入到for循環(huán)后。是先執(zhí)行遞歸的,直到這個(gè)遞歸有結(jié)果返回,你才回到for循環(huán)繼續(xù)執(zhí)行。

回答2:

都是同步的,肯定遞歸執(zhí)行完了才進(jìn)去下一個(gè)for循環(huán)

標(biāo)簽: JavaScript