JSFiddle - React, Tailwind, and code Playground

JavaScript

"use strict"

function mult() {
  var result = arguments[0];
  for(var i = 1; i < arguments.length; i++){
    result *= arguments[i];
  }
  return result
}

function partialAny() {
  var arrArg = [].slice.call(arguments); //копирую аргументы partialAny
  return function(){
    var result = arrArg.slice(1); //снова копирую эти же аргументы, чтобы вызывать функцию несколько раз 
    var arr = [].slice.call(arguments).reverse(); //копирую аргументы передаваемые в mult1
    for(var i = 0; i < result.length && arr.length !== 0; i++){ //проверяю наличие аргуметов у mult1
     if(result[i] === undefined) result[i] = arr.pop(); //ищу undefined и заменяю его на соотвествущий арг.
    }
    if(arr.length !== 0) result = result.concat(arr);//присоединяю остатки массива
    return arrArg[0].apply(this, result);//передаю функции (из аргумента partialAny) конечный массив
  }
}

var mult1 = partialAny(mult, 1, undefined, 3, undefined);

alert(partialAny(mult, 1)(10, 60));
alert(mult1(10, 2));
alert(mult1(2, 2, 2, 2));
alert(mult1(5));


/*function partialAny() {
  var arrArg = [].slice.call(arguments);
  return function(){
    var arrArg1 = arrArg.slice();
    var func = arrArg1.shift();																		А так я сделал первый раз, как уебан, но за 
    var arr = [].slice.call(arguments);														все тесты прошло.
    for(var i = 0; i < arrArg1.length; i++){											
      if(arrArg1[i] === undefined) arrArg1[i] = arr.shift();
      if(arr.length === 0) break;
    }
    if(arr.length !== 0) arrArg1 = arrArg1.concat(arr);
    return func.apply(this, arrArg1);
  }
}*/