递归复制:退出条件与循环引用 | 星雨笔录

理解递归复制边界与循环引用风险。

核心: 递归处理嵌套结构要有终止条件;有循环引用的数据不能无限向下遍历。

最小示例:

function countNodes(node, seen = new WeakSet()) {
  if (!node || typeof node !== 'object' || seen.has(node)) return 0;
  seen.add(node);
  return 1 + Object.values(node).reduce((n, x) => n + countNodes(x, seen), 0);
}

学完能做: 理解递归复制边界与循环引用风险。