JSFiddle - React, Tailwind, and code Playground
JavaScript
"use strict";
function add(a, b) { return a + b; }
function mult(a, b, c, d) { return a * b * c * d; }
function partial () {
var fn = [].shift.apply(arguments);
var args = [].slice.call(arguments);
return function() {
var allArgs = args.concat([].slice.call(arguments));
return fn.apply(null, allArgs);
}
}
function partialAny() {
var fn = [].shift.apply(arguments);
var args = [].slice.call(arguments);
return function () {
var k = 0;
for (var i = 0; i < args.length; i++) {
if (args[i] === undefined) {
args[i] = arguments[k];
k++;
}
}
return fn.apply(null, args);
}
}
function test(a, b, c, d) { return 'a=' + a + ',b=' + b + ',c=' + c + ',d=' + d; }
var test1_3 = partialAny(test, 1, undefined, undefined, undefined);
var test7_6 = partialAny(test, 1, undefined, 7, undefined);
console.log(test1_3(5,7)); // a=1,b=5,c=3
console.log(test7_6()); // a=1,b=5,c=3
var add5 = partial(add, 5); // Мы получили функцию с 1 аргументом, которая прибавляет к любому числу 5
//console.log(add5(2)); // 7
//console.log(add5(10)); // 15
//console.log(add5(8)); // 13
var mult23 = partial(mult, 2, 3); // мы зафиксировали первые 2 аргумента mult() как 2 и 3
//console.log(mult23(4, 5)); // 2*3*4*5 = 120
//console.log(mult23(1, 1)); // 2*3*1*1 = 6