破解遞歸爆棧的深拷貝 -开发者知识库

破解遞歸爆棧的深拷貝 -开发者知识库,第1张

破解遞歸爆棧的深拷貝

https://juejin.im/post/5c45112e6fb9a04a027aa8fe#heading-11

遞歸爆棧問題

https://blog.csdn.net/weixin_34151004/article/details/88452339

函數 caller 運行時,調用其他函數 called ,js會在調用棧中新開一個調用幀存儲作用域和上下文信息,而caller的調用幀信息仍需要保存。而內存中調用棧存儲信息有限,遞歸情況下,如果遞歸層次過深會導致調用棧耗光而引起stack overflow —— 爆棧。

----------------------------------------------------------

遞歸深拷貝

function clone(source) {
    var target = {};
    for(var i in source) {
        if (source.hasOwnProperty(i)) {
            if (typeof source[i] === 'object') {
                target[i] = clone(source[i]); // 注意這里
            } else {
                target[i] = source[i];
            }
        }
    }

    return target;
}

最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复