La expresión eval (“function (x) {return x * x}”) rompe la consola node.js

Cuando escribo algo como esto en la consola de node.js:

var f = eval("function(x) { return x*x}"); 

No evalúa la expresión y espera a que escriba algo más.

introduzca la descripción de la imagen aquí

¿Por qué está pasando esto? ¿Por qué no puedo escribir otra expresión después de esta?

 function(x) { return x*x} 

es un error (escríbalo en la consola para verificarlo), por lo que el REPL de Node espera más.

Si desea construir y asignar la función, debe evaluar una expresión, es decir, una statement que devuelve un valor. La solución habitual es cerrar la expresión de la función con paréntesis.

Usted puede escribir

 var f = eval("(function(x) { return x*x})"); 

o

 var f = Function("x", "return x*x"); 

y por supuesto

 var f = function(x) { return x*x}; 

pero supongo que usted sabe esto.

    Intereting Posts