gpt4 book ai didi

JavaScript ES6 : Recursive function call from foreach loop fails

转载 作者:行者123 更新时间:2023-12-01 02:21:40 25 4
gpt4 key购买 nike

我是 JavaScript 新手。

class ExpansionPath {
expandPipelineNodes()
{
this.expandPipelineNode(this._rootNodes);
}
expandPipelineNode(node)
{
let bPipeline = false
_.each(node.children,function(child){
bPipeline |= this.expandPipelineNode(child);
})

...
}
}

当我调用函数expandPipelineNodes时,它会调用expandPipelineNode(node),这很好。但是当它进入 foreach 循环时,程序崩溃了。我已经调试了该程序,它表明这在 forEach 循环中变为未定义。我还尝试了以下代码:

    node.children.forEach(function(child){
bPipeline |= this.expandPipelineNode(child);
})

但问题仍然存在。我怎样才能用javascript解决这个问题?

最佳答案

回调内部的范围与外部的范围不同。保留词法范围的简单方法是使用箭头函数:

_.each(node.children, (child) => {
bPipeline |= this.expandPipelineNode(child);
})

您还可以使用Function.prototype.bind :

_.each(node.children, function (child) {
bPipeline |= this.expandPipelineNode(child);
}.bind(this))`

但这更冗长。

还有其他几种方法可以让它发挥作用,但它们在 2018 年并不酷。

关于JavaScript ES6 : Recursive function call from foreach loop fails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49160556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com