Конструктор Function()
Конструктор Function
создаёт новый объект Function
. Вызов конструктора напрямую позволяет создавать функции программным путём, однако такой способ представляет угрозу для безопасности, а также несёт разные (хотя не такие значительные) проблемы с производительностью при использовании с Global_Objects/eval
. Однако в отличие от eval, конструктор Function
создаёт функции, выполняемые только в глобальной области видимости.
Интерактивный пример
Синтаксис
js
new Function(arg1, functionBody)
new Function(arg1, arg2, functionBody)
new Function(arg1, ... , argN, functionBody)
Параметры
arg1, arg2, ... argN
-
Имена, используемые функцией в качестве имён формальных аргументов. Каждое имя должно быть строкой с правильным JavaScript-значением (либо идентификатором, оставшимся параметром, или деструктурирующим присваиванием, либо списком таких строк, разделённых запятой.
Поскольку параметры разбираются так же, как и объявления функций, допускается использование пробелов и комментариев. Например:
"x", "theValue = 42", "[a, b] /* numbers */"
— или"x, theValue = 42, [a, b] /* numbers */"
. ("x, theValue = 42", "[a, b]"
также будет правильным, хотя трудно читаемым). functionBody
-
Строка, содержащая инструкции JavaScript, составляющие определение функции.
Описание
Объекты Function
, созданные конструктором Function
, разбираются при создании функции. Определение функции при помощи выражения function или инструкции function и вызова её внутри вашего кода более эффективно, поскольку такие функции разбираются вместе с остальным кодом.
Все аргументы, переданные в функцию, трактуются как имена идентификаторов параметров создаваемой функции, и имеют тот же порядок следования, что и при их передаче в конструктор функции. Если опустить аргумент, то значение этого параметра будет undefined
.
Вызов конструктора Function
как функции (без использования оператора new
) имеет тот же самый эффект, что и вызов его как конструктора.
Примеры
Пример: указание аргументов в конструкторе Function
Следующий код создаёт объект `Function, который принимает два аргумента.
js
// Пример может быть запущен непосредственно в вашей консоли JavaScript
// Создаём функцию, принимающую два аргумента, и возвращающую их сумму
const adder = new Function("a", "b", "return a + b");
// Вызываем функцию
adder(2, 6);
// 8
Аргументы "a
" и "b
" являются именами формальных аргументов, которые используются в теле функции, "return a + b
".
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-function-constructor |
Поддержка браузерами
BCD tables only load in the browser
Смотрите также
- Функции и их область видимости
- Инструкция
function
- Выражение
function
- Инструкция
function*
- Выражение
function*
AsyncFunction
GeneratorFunction