La función incorporada eval permite ejecutar una cadena de código.
La sintaxis es:
let result = eval(code);
Por ejemplo:
let code = 'alert("Hello")';
eval(code); // Hello
Una cadena de código puede ser larga, contener cortes de línea, declaración de funciones, variables y así.
El resultado de eval es el resultado de la última sentencia.
Por ejemplo:
let value = eval('1+1');
alert(value); // 2
let value = eval('let i = 0; ++i');
alert(value); // 1
El código evaluado es ejecutado en el entorno léxico presente, entonces podemos ver sus variables externas:
let a = 1;
function f() {
let a = 2;
eval('alert(a)'); // 2
}
f();
También puede modificar variables externas:
let x = 5;
eval("x = 10");
alert(x); // 10, valor modificado
En modo estricto, eval tiene su propio entorno léxico. Entonces funciones y variables declaradas dentro de eval no son visibles fuera:
// recordatorio: 'use strict' está habilitado en los ejemplos ejecutables por defecto
eval("let x = 5; function f() {}");
alert(typeof x); // undefined (no existe tal variable)
// la función f tampoco es visible