繁体   English   中英

Javascript-从外部关闭函数中的访问变量

[英]Javascript - Access variable in function closure from outside

我想知道是否有某种方法可以从该函数的外部获取嵌套函数捕获的变量的值。 用言语解释有点棘手,所以这是我想要实现的目标:

function counter(){
    let count = 0;
    return function counterIncrementer(){
      ++count;
    }
}

function someReceiever(counterIncrementer){
    // From here, somehow access the value of count captured by 
    // counterIncrementer.
    // -> Without modifying the counter/returned counterIncrementer function 
    //    before runtime
}
someReceiever(counter())

谢谢 !

据我所知-这是不可能的。 count数值是counter函数的一部分,并且只能在此范围内或在该函数内部创建的函数范围内访问(基本上是闭包)。

我认为您可能会发现此线程有用: 访问由闭包捕获的变量

这样做的唯一方法是将count声明为全局变量,或者创建另一个仅用于访问count的函数(嵌套在counter中)。 但是鉴于代码的结构,这似乎不是一个很好的答案。

function counter(){
    let count = 0;
    return [
        function counterIncrementer(){
            ++count;
        }, 
        function counterGetter() {
            return count;
        }
    ];
}

function someReceiever(counterIncrementerPack){
    let counterIncrementer = counterIncrementerPack[0];
    let counterGetter = counterIncrementerPack[1];

    console.log(counterIncrementer(), counterGetter(), counterGetter(), counterIncrementer(), counterGetter());
}
someReceiever(counter())

输出: undefined 1 1 undefined 2

注意:您可能还想使counterIncrementer返回++ count,但这不是耸耸肩的问题。

暂无
暂无

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

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