当我在node.js控制台中输入类似的东西时:
var f = eval("function(x) { return x*x}");
它不会评估表达式并等待我输入其他内容。
为什么会这样?为什么我不能在这个之后输入另一个表达式?
答案 0 :(得分:2)
function(x) { return x*x}
是一个错误(在控制台中输入它来检查),因此Node的REPL会等待更多。
如果要构建和分配函数,则必须评估表达式,即返回值的语句。通常的解决方案是用括号关闭函数表达式。
你可以写
var f = eval("(function(x) { return x*x})");
或
var f = Function("x", "return x*x");
当然
var f = function(x) { return x*x};
但我想你知道这个。