跳到主要内容

遍历节点

2024年11月10日
柏拉文
越努力,越幸运

一、认识


二、实现


const visit = (ast, visitor) => {
function traverse(node, parent) {
if (!node || typeof node !== "object") return;

if (visitor[node.type]) {
visitor[node.type](node, parent);
}

for (const key in node) {
if (!node.hasOwnProperty(key)) continue;

const child = node[key];
if (Array.isArray(child)) {
child.forEach((c) => traverse(c, node));
} else if (child && typeof child === "object") {
traverse(child, node);
}
}
}

traverse(ast, null);
};