На самом деле каждая JavaScript-функция является объектом Function. Это легко проверить, выполнив проверку (function(){}).constructor === Function, которая вернёт true.
Создаёт новый объект Function. Вызов конструктора напрямую позволяет создавать функции программным путём. Такой способ представляет угрозу для безопасности, а также несёт разные (хотя не такие значительные) проблемы с производительностью при использовании с Global_Objects/eval. Однако в отличие от eval, конструктор Function создаёт функции, выполняемые только в глобальной области видимости.
Массив с переданными функции аргументами.
Это устаревшее свойство объекта Function. Вместо него используйте объект arguments (доступный внутри функции).
Содержит функцию, которая вызвала текущую выполняющуюся функцию.
Это устаревшее свойство, которое работает только в функциях без включённого строгого режима.
Создает новую функцию, при вызове которой её this будет установлен на thisArg. Можно также указать ряд аргументов, которые будут добавлены к аргументам при вызове новой привязанной функции.
Функции, созданные через конструктор Function, не имеют доступа к собственному контексту исполнения, т.е. они всегда создаются в глобальной области видимости. При выполнении таких функций, они смогут обращаться только к своим локальным и глобальным переменным, но не к переменным в той области видимости, в которой вызывался конструктор Function. В этом они отличаются от использования Global_Objects/eval с функциями-выражениями.
js
var x =10;functioncreateFunction1(){var x =20;returnnewFunction("return x;");// здесь |x| ссылается на глобальный |x|}functioncreateFunction2(){var x =20;functionf(){return x;// здесь |x| ссылается на локальный |x| выше}return f;}var f1 =createFunction1();
console.log(f1());// 10var f2 =createFunction2();
console.log(f2());// 20
Хотя этот код работает в браузерах, в окружении Node.js вызов f1() приведёт к ошибке ReferenceError, потому что x не будет найден. Это происходит из-за того, что область видимости верхнего уровня в Node не является глобальной областью видимости, поэтому x ссылается на локальную переменную в пределах текущего модуля.
Tip: you can click/tap on a cell for more information.
Full support
Full support
Partial support
Partial support
No support
No support
Non-standard. Check cross-browser support before using.
Deprecated. Not for use in new websites.
See implementation notes.
Has more compatibility info.
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.