JavaScript свойство Function.length

Определение и применение

JavaScript свойство length объекта Function соответствует числу аргументов, ожидаемых функцией. Это значение не включает в себя rest-параметр (остаточные аргументы, собираемые в массив через ...) и только включает параметры перед первым со значением по умолчанию. В отличие от этого свойства, свойство length объекта arguments, который является локальным для функции и предоставляет количество аргументов, реально переданных в функцию. Свойство func.length доступно только для чтения.

Каждый параметр с деструктуризацией (извлечением полей объекта или элементов массива) считается одним параметром. Это не ограничение числа аргументов при вызове. Присваивание не меняет стандартное length, но его можно переопределить через Object.defineProperty().

Атрибуты свойства: writable разрешает присваивание, enumerable определяет участие в перечислении свойств, configurable разрешает удаление и переопределение.

length: справочные сведения
Атрибут Значение
writable false
enumerable false
configurable true*

* - до реализации ECMAScript 2015 атрибут configurable имел значение false.

Подробную информацию о дескрипторах свойств вы можете получить в описании метода defineProperty(), который позволяет определить новое или изменить существующее свойство объекта, описывая его дескрипторами.

Поддержка браузерами

Спецификация: ecma262

Поддерживается во всех основных браузерах с 2015 года.

Показать браузеры
Совместимостьjavascript.builtins.Function.length
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
length✓1✓12✓1✓3✓1✓18✓4✓10.1✓1✓1.0✓4.4✓1
Configurable: true✓43✓12✓37✓30✓10✓43✓37✓30✓10✓4.0✓43✓10

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис:

JavaScript
func.length

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

ECMAScript — Function: length.

Примеры, попробуйте сами

Какие параметры учитываются в length

Добавьте параметр до значения по умолчанию или после него. Сравните length функции и arguments.length при вызове.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
// конструктор Function является объектом Function и его свойство length имеет значение 1
console.log(Function.length) // возвращаемое значение 1

// свойство length объекта прототипа Function имеет значение 0
console.log(Function.prototype.length) // возвращаемое значение 0

console.log(function () {}.length) // возвращаемое значение 0
console.log(function (a) {}.length) // возвращаемое значение 1
console.log(function (a, b) {}.length) // возвращаемое значение 2
console.log(function (...args) {}.length) // возвращаемое значение 0
console.log(function (a, ...args) {}.length) // возвращаемое значение 1 (не включает в себя rest параметры)
console.log(function (a, b, c = 1) {}.length) // возвращаемое значение 2
console.log(function (a, b = 1, c) {}.length) // возвращаемое значение 1 (параметры до первого со значением по умолчанию)

// Деструктуризация считается одним параметром, фактические аргументы — отдельно.
function unpack({ value }, second = 0) {
    console.log(arguments.length)
}
console.log(unpack.length) // 1
unpack({ value: 1 }, 2, 3) // 3