expression式eval(“function(x){return x * x}”)打破了node.js控制台

当我在node.js控制台中input这样的东西时:

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

它不评估expression式,并等待我input其他内容。

在这里输入图像描述

为什么发生这种情况? 为什么我不能在这个之后input另一个expression式?

 function(x) { return x*x} 

是一个错误(在控制台input它来检查),所以Node的REPL等待更多。

如果要构build和分配函数,则必须对expression式进行评估,即返回值的语句。 通常的解决方法是用括号closures函数expression式。

你可以写

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

要么

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

而且当然

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

但我想你知道这一个。