Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Стандартные встроенные объекты
  5. Function

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

Function

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨июль 2015 г.⁩.

* Some parts of this feature may have varying levels of support.

На самом деле каждая JavaScript-функция является объектомFunction. Это легко проверить, выполнив проверку(function(){}).constructor === Function, которая вернёт true.

Конструктор

Function()

Создаёт новый объектFunction. Вызов конструктора напрямую позволяет создавать функции программным путём. Такой способ представляет угрозу для безопасности, а также несёт разные (хотя не такие значительные) проблемы с производительностью при использовании сGlobal_Objects/eval. Однако в отличие от eval, конструкторFunction создаёт функции, выполняемые только в глобальной области видимости.

Свойства экземпляра

Function.prototype.arguments

Массив с переданными функции аргументами.Это устаревшее свойство объектаFunction. Вместо него используйте объектarguments (доступный внутри функции).

Function.prototype.caller

Содержит функцию, которая вызвала текущую выполняющуюся функцию.Это устаревшее свойство, которое работает только в функциях без включённого строгого режима.

Function.prototype.displayName

Отображаемое имя функции.

Function.prototype.length

Содержит количество аргументов в функции.

Function.prototype.name

Имя функции.

Методы экземпляра

Function.prototype.apply(thisArg [,argsArray])

Вызывает функцию и устанавливает еёthis на переданныйthisArg. Аргументы могут быть переданы в виде объектаArray.

Function.prototype.bind(thisArg[,arg1[,arg2[, ...argN]]])

Создает новую функцию, при вызове которой еёthis будет установлен наthisArg. Можно также указать ряд аргументов, которые будут добавлены к аргументам при вызове новой привязанной функции.

Function.prototype.call(thisArg[,arg1,arg2, ...argN])

Вызывает функцию и устанавливает еёthis на переданное значение. Аргументы могут быть переданы как есть.

Function.prototype.toString()

Возвращает строку с исходным кодом функции.Переопределяет методObject.prototype.toString.

Примеры

Сравнение конструктора Function и объявления функции

Функции, созданные через конструкторFunction, не имеют доступа к собственному контексту исполнения, т.е. они всегда создаются в глобальной области видимости. При выполнении таких функций, они смогут обращаться только к своим локальным и глобальным переменным, но не к переменным в той области видимости, в которой вызывался конструкторFunction. В этом они отличаются от использованияGlobal_Objects/eval с функциями-выражениями.

js
var x = 10;function createFunction1() {  var x = 20;  return new Function("return x;"); // здесь |x| ссылается на глобальный |x|}function createFunction2() {  var x = 20;  function f() {    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 ссылается на локальную переменную в пределах текущего модуля.

Спецификации

Specification
ECMAScript® 2026 Language Specification
# sec-function-objects

Совместимость с браузерами

Смотрите также

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp