Function constructor creates a new
Function object. Calling the constructor directly can create functions dynamically, but suffers from security and similar (but far less significant) performance issues to
eval. However, unlike eval, the
Function constructor creates functions which execute in the global scope only.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
new Function([arg1 [, arg2 [, ...argN]] ,] functionBody)
arg1, arg2, ... argN
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.
Specifying arguments with the Function 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 Latest Draft (ECMA-262)
The definition of 'Function constructor' in that specification.
|Chrome Full support 1||Edge Full support 12||Firefox Full support 1||IE Full support 4||Opera Full support Yes||Safari Full support 1||WebView Android Full support 1||Chrome Android Full support 18||Firefox Android Full support 4||Opera Android Full support Yes||Safari iOS Full support 1||Samsung Internet Android Full support 1.0||nodejs Full support Yes|
- Full support
- Full support