Javascript 如何返回计数结果而不是闭包函数?
我有一个函数,如果树至少有一个enebled值,它将返回布尔值:Javascript 如何返回计数结果而不是闭包函数?,javascript,typescript,Javascript,Typescript,我有一个函数,如果树至少有一个enebled值,它将返回布尔值: treeHasEnabledNode(): Function { let enabled = false; return function isNodeEnabled(node: T): boolean { if (!node || !node.children || !node.children.length) return enabled; if (node.enabled &am
treeHasEnabledNode(): Function {
let enabled = false;
return function isNodeEnabled(node: T): boolean {
if (!node || !node.children || !node.children.length) return enabled;
if (node.enabled && node.enabled !== undefined) return true;
node.children.forEach((node: T) => {
enabled = isNodeEnabled(node);
});
return enabled;
};
}
使用的是:
let hasEnabled = treeHasEnabledNode()(this.tree);
如何在不调用函数(this.tree)的情况下返回结果?您可以通过几种方法来实现这一点。最简单的方法可能是在外部函数中调用内部函数,并返回结果:
函数树hasenabledNode(节点){
让启用=假;
函数已启用(节点){
//做任何事。例如:
返回启用
}
返回为nodeEnabled(节点);
}
const node={};
log(treeHasEnabledNode(node))
我有一个函数,如果树至少有一个加密值,它将返回布尔值
-不,您没有。这不是你的函数所做的。仅当数组中的最后一个值已启用时,它才会返回true。为什么,如果循环面对第一个节点且enabled=true,它将返回布尔值。它将覆盖循环中的每个项。因此,enabled
的值仅包含循环中最后一项的结果。如果(!enabled){enabled=isNodeEnabled(node)}或enabled=enabled,您应该编写if(!enabled){enabled=isNodeEnabled(node)}
?已启用:isNodeEnabled(节点)
但我更喜欢if语句我不同意,因为我有if(node.enabled&&node.enabled!==undefined)返回true代码>如果节点已启用,它将停止并返回