tgoop.com/prog_way_blog/117
Create:
Last Update:
Last Update:
Лишние аргументы и arguments
В прошлом посте я рассказывал о перегрузке функций, где обещал подробнее рассказать о псевдомассиве arguments
. Этот пост как раз об этом.
Итак, этот псевдомассив доступен только внутри функции, объявленной с помощью ключевого слова function
. В стрелочных функциях этого псевдомассива нет.
function foo() {
console.log(arguments)
}
foo(1,2,3)
// { '0': 1, '1': 2, '2': 3 }
Да и вообще, почему я пишу, что это псевдомассив, если в результате мы видим, что
arguments
— объект? На самом деле это объект, подобный массиву. Это обычный объект, у которого реализован геттер length
и к которому можно применять некоторые другие операторы итерируемых сущностей. Но у arguments
нет других методов массива, например shift
или push
.Эта сущность применяется в тех случаях, когда нам нужно реализовать функцию, для которой заранее неизвестно с каким количеством аргументов она будет вызвана. Например, реализуем функцию, которая выведет сумму всех аргументов:
function sum() {
return [...arguments].reduce((acc, cur) => acc + cur, 0)
}
Как вы можете заметить, я применяю Spread оператор к
arguments
, потому что у этого псевдомассива нет метода reduce
. Таким образом получается функция, которая соответствует задаче.sum(1,2,3,4,5) // 15
sum(1,2,3,4,5,6,7,8,9) // 45
sum(10, 20) // 30
sum() // 0
Есть ещё миллионы примеров применения
arguments
, но об этом в другой раз. А пока что у меня всё. Спасибо за прочтение и интерес.#javascript #theory
BY progway — программирование, IT

Share with your friend now:
tgoop.com/prog_way_blog/117