fork download
  1. function partial(fn) {
  2. var args = [];
  3. for (var i = 1; i < arguments.length; i++) {
  4. args.push(arguments[i]);
  5. }
  6. i = 1;
  7. return function() {
  8. for (var j = 0; j < arguments.length; j++) {
  9. args.push(arguments[j]);
  10. }
  11. j = 0;
  12. return fn.apply(null, args);;
  13. }
  14. }
  15.  
  16.  
  17.  
  18.  
  19. function add(a, b) { return a + b; }
  20. function mult(a, b, c, d) { return a * b * c * d; }
  21.  
  22. var add5 = partial(add, 5); // Мы получили функцию с 1 аргументом, которая прибавляет к любому числу 5
  23.  
  24. console.log(add5(2)); // 7
  25. console.log(add5(10)); // 15
  26. console.log(add5(8)); // 13
  27.  
  28. var mult23 = partial(mult, 2, 3); // мы зафиксировали первые 2 аргумента mult() как 2 и 3
  29.  
  30. console.log(mult23(4, 5)); // 2*3*4*5 = 120
  31. console.log(mult23(1, 1)); // 2*3*1*1 = 6
Runtime error #stdin #stdout #stderr 0.47s 321856KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
js: uncaught JavaScript runtime exception: ReferenceError: "console" is not defined.