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};
但我想你知道这一个。