Sergey
Sergey

Reputation: 49788

Expression eval("function(x) { return x*x}") breaks node.js console

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.

enter image description here

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

Upvotes: 2

Views: 1658

Answers (1)

Denys Séguret
Denys Séguret

Reputation: 382394

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.

Upvotes: 2

Related Questions