Definir variable const utilizando eval ()

Cuando bash definir una variable usando var, todo funciona.

Pero definirlo como const no funciona como se esperaba y la variable no está definida.

window.eval("var v = 5;"); document.body.innerHTML += window.v === undefined; window.eval("const l = 5;"); document.body.innerHTML += window.l === undefined; 

Lo he probado en Chrome y Node.js. ¿Me estoy perdiendo de algo?

¡Gracias de antemano!

Eso es porque const activa el modo estricto por defecto. Vea qué sucede cuando activa el modo estricto para ambos ejemplos explícitamente:

 window.eval("'use strict'; var v = 5;"); document.body.innerHTML += window.v === undefined; window.eval("'use strict'; const l = 5;"); document.body.innerHTML += window.l === undefined; 

Usar let y const en el código eval no invoca el modo estricto. let y const son Declaraciones léxicas , que limitan su scope al ámbito léxico adjunto.

Se crea un ámbito léxico mediante un bloque y mediante una llamada directa a eval (consulte Runtime Semantics: PerformEva step 12 ).

Intereting Posts