表达式eval(“function(x){return x * x}”)会破坏node.js控制台

时间:2013-10-13 16:50:19

标签: node.js eval

当我在node.js控制台中输入类似的东西时:

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

它不会评估表达式并等待我输入其他内容。

enter image description here

为什么会这样?为什么我不能在这个之后输入另一个表达式?

1 个答案:

答案 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};

但我想你知道这个。