繁体   English   中英

回调 function 可以是闭包吗?

[英]Can a callback function be a closure?

getTotal() {
    let total = 0;
    this.results.forEach(result => {
        total += result.marks;
    })
    return total;
}

forEach 方法内的回调 function 是否是一个闭包,因为它正在访问其 scope 之外的总变量?

是的,它就是。 使用reduce进行折叠:

 return this.results.reduce((total, result) => total + result.marks)

是的,这是关闭。 您的anonymous cb function 已在同一个 scope 中声明为total变量, anonymous cb有一个隐式[[Environment]]属性,其中存储了您的total变量。 在这里检查。 https://javascript.info/closure

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM