PROG_WAY_BLOG Telegram 117
​​Лишние аргументы и 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
👍31



tgoop.com/prog_way_blog/117
Create:
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

View MORE
Open in Telegram


Telegram News

Date: |

Matt Hussey, editorial director of NEAR Protocol (and former editor-in-chief of Decrypt) responded to the news of the Telegram group with “#meIRL.” Activate up to 20 bots The creator of the channel becomes its administrator by default. If you need help managing your channel, you can add more administrators from your subscriber base. You can provide each admin with limited or full rights to manage the channel. For example, you can allow an administrator to publish and edit content while withholding the right to add new subscribers. The optimal dimension of the avatar on Telegram is 512px by 512px, and it’s recommended to use PNG format to deliver an unpixelated avatar. End-to-end encryption is an important feature in messaging, as it's the first step in protecting users from surveillance.
from us


Telegram progway — программирование, IT
FROM American