В чем разница между function.длина и аргументы.длина в JS

#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, поскольку в его объявлении не указаны никакие аргументы.