Функция bind, каррирование

99
05 марта 2021, 17:20
  1. Я правильно понял, что встроенный bind может выполнить каррирование ?
  2. Написанный bind не может выполнить каррирование ?

function mul(a, b) { 
  return a * b; 
}; 
 
var q = mul.bind(null, 2); 
console.log(q(2,3))

function mul(a, b) { 
  return a * b; 
}; 
 
function bind(func, context){ 
  return function(){ 
    return func.apply(context, arguments) 
  }; 
}; 
 
var s = bind(mul, 'context', 3); 
 
console.log(s(2))

Answer 1

В вашем примере bind не выполняет карринг. Он принимает 2 параметра (func, context). Вы нигде не привязываете аргументы.

Если я правильно понял, вы хотите сделать что-то вроде этого:

function bind(func, context, ...args) { 
    return function(...args2) { 
      // Заметьте, что я использовал call вместо apply 
      return func.call(context, ...args, ...args2); 
    } 
} 
 
const mul = (a, b) => a * b; 
 
console.log(mul(2, 3)); // 6 
console.log(mul(3, 4)); // 12 
console.log(mul(4, 5)); // 20 
 
const double = bind(mul, null, 2); 
 
console.log(double(2)); // 4 
console.log(double(3)); // 6 
console.log(double(5)); // 10

READ ALSO
Сборка webpack + sass

Сборка webpack + sass

Не могу подключить в конфиг webpack сборку scss файлов в css файлПодскажите, пож-ста, в чём ошибка, вот webpack

107
Не подключается СSS

Не подключается СSS

у меня возникла такая проблема - есть файлы styleForLabacss, program

144
Смена фото на карточке товара при ховере [закрыт]

Смена фото на карточке товара при ховере [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме

83