Javascript 如何返回计数结果而不是闭包函数?

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

我有一个函数,如果树至少有一个enebled值,它将返回布尔值:

  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如果节点已启用,它将停止并返回