Function constructor creates
Function object. Calling the constructor directly
can create functions dynamically, but suffers from security and similar (but far less
significant) performance issues to
Global_Objects/eval. However, unlike eval, the
Function constructor creates functions which execute in the global scope
new Function(arg1, functionBody) new Function(arg1, arg2, functionBody) new Function(arg1, ... , argN, functionBody)
arg1, arg2, ... argN
As the parameters are parsed in the same way as function declarations, whitespace and comments are accepted. For example:
"x", "theValue = 42", "[a, b] /* numbers */"— or
"x, theValue = 42, [a, b] /* numbers */". (
"x, theValue = 42", "[a, b]"is also correct, though very confusing to read.)
Function objects created with the
Function constructor are
parsed when the function is created. This is less efficient than declaring a function
with a function expression or
function statement and calling it within
your code because such functions are parsed with the rest of the code.
All arguments passed to the function are treated as the names of the identifiers of the
parameters in the function to be created, in the order in which they are passed.
Omitting an argument will result in the value of that parameter being
Function constructor as a function (without using the
new operator) has the same effect as invoking it as a constructor.
The following code creates a
Function object that takes two arguments.
The arguments "
a" and "
b" are formal argument names that are
used in the function body, "
return a + b".
|ECMAScript Language Specification (ECMAScript)|
BCD tables only load in the browser