Конструктор 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* AsyncFunctionGeneratorFunction