Перепишите суммирование аргументов
важность: 5
Есть функция sum
, которая суммирует все элементы массива:
function
sum
(
arr
)
{
return
arr.
reduce
(
function
(
a,
b
)
{
return
a +
b;
}
)
;
}
alert
(
sum
(
[
1
,
2
,
3
]
)
)
;
// 6 (=1+2+3)
Создайте аналогичную функцию sumArgs()
, которая будет суммировать все свои аргументы:
function
sumArgs
(
)
{
/* ваш код */
}
alert
(
sumArgs
(
1
,
2
,
3
)
)
;
// 6, аргументы переданы через запятую, без массива
Для решения примените метод reduce
к arguments
, используя call
, apply
или одалживание метода.
P.S. Функция sum
вам не понадобится, она приведена в качестве примера использования reduce
для похожей задачи.
Первый вариант
function
sumArgs
(
)
{
// скопируем reduce из массива
arguments.
reduce =
[
]
.
reduce;
return
arguments.
reduce
(
function
(
a,
b
)
{
return
a +
b;
}
)
;
}
alert
(
sumArgs
(
4
,
5
,
6
)
)
;
// 15
Второй вариант
Метод call
здесь вполне подойдёт, так как требуется вызвать reduce
в контексте arguments
с одним аргументом.
function
sumArgs
(
)
{
// запустим reduce из массива напрямую
return
[
]
.
reduce
.
call
(
arguments,
function
(
a,
b
)
{
return
a +
b;
}
)
;
}
alert
(
sumArgs
(
4
,
5
,
6
)
)
;
// 15