Si no estas muy interiorizado en el tema de clousures probablemente resulte confuso.
Un clousure es un espacio cerrado al entorno, esto es, lo que definís dentro del clousure no tendrá visibilidad externa a menos que vos quieras, por ejemplo:
Código Javascript
:
Ver originalfunction createClousure() {
// Estas variables son "privadas", no pueden ser accedidas
// desde el exterior del closure, a menos que queramos
var a, b, c;
a = 1;
b = 'hola';
c = [1,2,3];
// Devolvemos un objeto que tiene visibilidad interna, basicamente
// "recuerda" el contexto en el cual fue definido
return {
getA: function() { return a },
getB: function() { return b },
getC: function() { return c }
}
}
Al realizar un
eval tenés visibilidad de todos las variables a las que puede acceder el contexto sobre el que está situado.
Si queres usar la function que realiza el eval por si sola no te va a resolver muchas dudas:
Código Javascript
:
Ver originalfunction wrappedEval(q) {
console.log(eval('typeof ' + q));
}
wrappedEval('a'); // undefined
wrappedEval('setTimeout'); // function