访问 javascript 函数内的变量(生成器)

Access variable inside javascript function (generator)

在 Javascript 中,假设我有一个生成器,我无法修改其源代码。我迭代了几次,现在想深入了解生成器的变量。如何在不更改生成器本身代码的情况下执行此操作?更具体地说-

async function* myGen(){
    while (true){
        let a = something
        yield something_else
    } 
}

let gen = myGen()

for await (const data of gen){
    if(data === special_value){
        let my_a = get_value_of_a(gen) // this is the function i want
    }
}

如果生成器不产生 a 的值(或让您访问 a 的值的东西),您将无法访问它。 a 是生成器函数中的局部变量。它不能从该函数外部访问(除非你做了一些事情让它可以访问,但你说你不能修改生成器函数)。

换句话说:a 的值是生成器对象函数 returns 中保存的私有信息。如果生成器对象不提供这样做的方法,则您无法访问该私有信息,而生成器函数创建的那些默认情况下不提供。

可以从 class 或命名空间中的任何位置访问全局变量。 ...如果在这些范围中的任何一个中定义了一个变量,它将对当前范围和嵌套在其中的范围可见。简单来说:在循环内声明的变量在循环外是不可见的。

    var global = "Global Variable"; //Define global variable outside of function.
​    function setGlobal(){
    global = "Hello World!";
    };
    setGlobal();
    console. log(global); //This will print out "Hello World"