length у функции в JavaScript
- Что такое length у функции
- Функция без параметров
- Несколько параметров
- Параметры по умолчанию
- Rest parameters
- length и arguments.length
- Где используется
- Итого
length у функции показывает количество параметров, которые указаны в объявлении функции.
function sum(a, b) {
return a + b;
}
console.log(sum.length);
Результат:
2
У функции sum() два параметра: a и b. Поэтому sum.length вернул 2.
Что такое length у функции
Функция в JavaScript - это значение. У нее есть свойства, и одно из них - length.
Это свойство не вызывает функцию и не смотрит, сколько аргументов передали при запуске.
Оно смотрит только на параметры в объявлении функции.
function createUser(name, age, city) {
return name;
}
console.log(createUser.length);
Результат:
3
Функция без параметров
Если у функции нет параметров, свойство length вернет 0.
function showMessage() {
console.log('Привет!');
}
console.log(showMessage.length);
Результат:
0
Несколько параметров
Если параметров несколько, length вернет их количество.
function getFullName(firstName, lastName) {
return firstName + ' ' + lastName;
}
console.log(getFullName.length);
Результат:
2
То же самое работает с Function Expression и стрелочными функциями.
let multiply = function (a, b) {
return a * b;
};
let double = (number) => number * 2;
console.log(multiply.length);
console.log(double.length);
Результат:
2
1
Параметры по умолчанию
С параметрами по умолчанию есть важная особенность.
length считает только параметры до первого параметра со значением по умолчанию.
function createUser(name, role = 'user') {
return name + ': ' + role;
}
console.log(createUser.length);
Результат:
1
Параметр name посчитался, а role уже нет, потому что у него есть значение по умолчанию.
Если после параметра по умолчанию идут другие параметры, они тоже не попадут в length.
function example(a, b = 10, c) {
console.log(a, b, c);
}
console.log(example.length);
Результат:
1
Rest parameters
Rest parameter не учитывается в length.
function sum(...numbers) {
return numbers.length;
}
console.log(sum.length);
Результат:
0
Если перед rest parameter есть обычные параметры, они будут посчитаны.
function log(prefix, ...messages) {
console.log(prefix, messages);
}
console.log(log.length);
Результат:
1
length и arguments.length
function.length и arguments.length - это разные вещи.
function.length показывает, сколько параметров записано в объявлении функции.
arguments.length показывает, сколько аргументов реально передали при вызове.
function showInfo(name, age) {
console.log(showInfo.length);
console.log(arguments.length);
}
showInfo('Анна');
Результат:
2
1
У функции два параметра, но при вызове передали только один аргумент.
Где используется
Свойство length иногда используют в библиотеках, отладке и служебном коде, когда нужно понять, сколько параметров ожидает функция.
function handler(event, index) {
console.log(event, index);
}
console.log('Функция ожидает параметров: ' + handler.length);
Результат:
Функция ожидает параметров: 2
В обычном прикладном коде это свойство нужно не каждый день, но знать его полезно.
Итого
1. length у функции показывает количество параметров в объявлении.
2. length не показывает количество переданных аргументов.
3. Параметры по умолчанию и параметры после них не учитываются.
4. Rest parameter не учитывается в length.
5. Для количества переданных аргументов внутри обычной функции есть arguments.length.