40 lines
1.3 KiB
Markdown
40 lines
1.3 KiB
Markdown
# Примените функцию к аргументам
|
||
|
||
[importance 5]
|
||
|
||
Напишите функцию `applyAll(func, arg1, arg2...)`, которая получает функцию `func` и произвольное количество аргументов.
|
||
|
||
Она должна вызвать `func(arg1, arg2...)`, то есть передать в `func` все аргументы, начиная со второго, и возвратить результат.
|
||
|
||
Например:
|
||
|
||
```js
|
||
// Применить Math.max к аргументам 2, -2, 3
|
||
alert( applyAll(Math.max, 2, -2, 3) ); // 3
|
||
|
||
// Применить Math.min к аргументам 2, -2, 3
|
||
alert( applyAll(Math.min, 2, -2, 3) ); // -2
|
||
```
|
||
|
||
Область применения `applyAll`, конечно, шире, можно вызывать её и со своими функциями:
|
||
|
||
```js
|
||
//+ run
|
||
function sum() { // суммирует аргументы: sum(1,2,3) = 6
|
||
return [].reduce.call(arguments, function(a, b) {
|
||
return a + b;
|
||
});
|
||
}
|
||
|
||
function mul() { // перемножает аргументы: mul(2,3,4) = 24
|
||
return [].reduce.call(arguments, function(a, b) {
|
||
return a * b;
|
||
});
|
||
}
|
||
|
||
*!*
|
||
alert( applyAll(sum, 1, 2, 3) ); // -> sum(1, 2, 3) = 6
|
||
alert( applyAll(mul, 2, 3, 4) ); // -> mul(2, 3, 4) = 24
|
||
*/!*
|
||
```
|
||
|