fork download
  1. function partial(fn) {
  2. var args = [];
  3.  
  4. for (var i = 1; i < arguments.length; i++) {
  5. args.push(arguments[i]);
  6. }
  7.  
  8. return function() {
  9. for (var j = 0; j <= arguments.length; j++) {
  10. args.push(arguments[j]);
  11. }
  12.  
  13. x = fn.apply(null, args);
  14. args.splice(i - 1,args.length);
  15. return x;
  16. }
  17. }
  18.  
  19.  
  20.  
  21.  
  22. function add(a, b) { return a + b; }
  23. function mult(a, b, c, d) { return a * b * c * d; }
  24.  
  25. var add5 = partial(add, 5); // Мы получили функцию с 1 аргументом, которая прибавляет к любому числу 5
  26.  
  27. console.log(add5(2)); // 7
  28. console.log(add5(10)); // 15
  29. console.log(add5(8)); // 13
  30.  
  31. var mult23 = partial(mult, 2, 3); // мы зафиксировали первые 2 аргумента mult() как 2 и 3
  32.  
  33. console.log(mult23(4, 5)); // 2*3*4*5 = 120
  34. 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.