2

当我在 node.js 控制台中键入这样的内容时:

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

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

在此处输入图像描述

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

4

1 回答 1

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

但我想你知道这个。

于 2013-10-13T16:52:35.950 回答