Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

difference between Function and new Function

I sometimes see people doing this Function('alert("hi")') and sometimes they do new Function('alert("hi")')

Is there a difference between the two?

like image 395
user594284 Avatar asked Jan 28 '11 19:01

user594284


1 Answers

The spec (page 127) says they're identical.

15.3.1.1 Function (p1, p2, … , pn, body)

When the Function function is called with some arguments p1, p2, … , pn, body (where n might be 0, that is, there are no “p” arguments, and where body might also not be provided), the following steps are taken:

  1. Create and return a new Function object as if the standard built-in constructor Function was used in a new expression with the same arguments (15.3.2.1).

However, you should avoid the Function constructor at all costs.
It needs to eval the string you pass to it; eval is evil, and slow too.

like image 157
SLaks Avatar answered Sep 20 '22 23:09

SLaks