#javascript
#javascript
Вопрос:
Я столкнулся с этим вопросом в edabit :
Создайте функцию, которая возвращает количество аргументов, с которыми она была вызвана.
Я попытался найти ответ в Google, но нашел 2 способа создать такую функцию, но это сбивает с толку.
Для примеров,
numArgs() ➞ 0
numArgs("foo") ➞ 1
numArgs("foo", "bar") ➞ 2
numArgs(true, false) ➞ 2
numArgs({}) ➞ 1
Как указано в названии моего вопроса, в чем разница между function.длина и аргументы.длина
Если я создам что-то вроде :
function args(){
return arguments.length;
}
Я получаю результат
но в чем разница, когда я делаю аргументы.вместо этого длина?
Комментарии:
1.
length
Свойство функции заключается в том, сколько у нее объявленных параметров .arguments
с другой стороны, дает вам общее количество аргументов, с которыми он был вызван . Такfunction f(a, b) {}
будетf.length === 2
, но вы можете назвать это какf(1)
илиf(1, 2, 3)
, что означает, чтоarguments.length
было бы1
или3
.
Ответ №1:
length
является свойством объекта функции и указывает, сколько аргументов ожидает функция, то есть количество формальных параметров. … В отличие от этого,arguments.length
является локальным для функции и предоставляет количество аргументов, фактически переданных функции.
Источник:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/length
Комментарии:
1. итак, аргументы. length используется в фигурных скобках, а свойство length используется для определенной функции, чтобы получить количество ее аргументов?
2.
.length
Свойство самой функции сообщает вам, сколько аргументов появляется в объявлении функции..length
Свойствоarguments
объекта сообщает вам, сколько фактических параметров было передано при конкретном вызове функции.
Ответ №2:
Ваш код определяет функцию, которая называется «args», которая не принимает / не обрабатывает аргументы.
Эта функция возвращает «длину» (количество) своих полученных аргументов, которая будет зависеть от того, сколько аргументов (если таковые имеются) было передано ей при ее вызове.
«Длина» (количество) его объявленных аргументов равна 0, поскольку в его объявлении не указаны никакие аргументы.