En Javascript, supongamos que tengo un generador del que no puedo modificar el código fuente. Iteré un par de veces y ahora quiero mirar dentro de las variables del generador. ¿Cómo puedo hacer esto sin cambiar el código del generador? Más concretamente -
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 } }Si el generador no arroja el valor de a (o algo que le dé acceso al valor de a ), no puede acceder a él. a es una variable local dentro de la función generadora. No es accesible desde fuera de esa función (a menos que haga algo para que sea accesible, pero dijo que no puede modificar la función del generador).
Dicho de otra manera: el valor de a es información privada contenida dentro del objeto generador que devuelve la función. No puede acceder a esa información privada si el objeto generador no proporciona un medio para hacerlo, que los creados por las funciones del generador no lo hacen de forma predeterminada.
Se puede acceder a las variables globales desde cualquier lugar en una clase o espacio de nombres. ... Si se define una variable en cualquiera de estos ámbitos, será visible para el ámbito actual y los que están anidados dentro de él. En términos simples: una variable declarada dentro de un ciclo no será visible fuera del ciclo.
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"