Expression eval(“function(x) { return x*x}

2020-04-17 05:20发布

问题:

When I type something like this in node.js console:

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

It doesn't evaluate the expression and waits for me to type something else.

Why is this happening? Why can't I type another expression after this one?

回答1:

function(x) { return x*x}

is an error (type it in the console to check that), so Node's REPL waits for more.

If you want to build and assign the function, you must eval an expression, that is a statement returning a value. The usual solution is to close the function expression with parenthesis.

You may write

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

or

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

and of course

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

but I suppose you know this one.



标签: node.js eval