概念

将接收多个参数的函数变成一系列接收单个参数的函数。

作用

  • 参数复用
  • 延迟执行

应用场景

计算打折的商品价格 -> 参数复用

  1. //普通写法
  2. const getPrice(discount, originPrice) => discount * originPrice;
  3. //柯尔化
  4. const getPriceCurry(discount) => (originPrice) => discount * originPrice;
  5. //计算牛奶和苹果价格
  6. //牛奶 折扣8折 原价4块 || 苹果 折扣8折 原价6块
  7. //普通
  8. milkPrice = getPrice(0.8, 4)
  9. applePrice = getPrice(0.8, 6)
  10. //柯尔化
  11. const discountHandle = getPriceCurry(0.8)
  12. milkPrice = discountHandle(4)
  13. applePrice = discountHandle(6)

封装兼容浏览器绑定函数 -> 参数复用

  1. //普通
  2. const on = function (element, event, handler) {
  3. if (document.addEventListener) {
  4. element.addEventListener(event, handler, false);
  5. } else {
  6. element.attachEvent('on' + event, handler);
  7. }
  8. }
  9. //柯尔化
  10. const onCurry = (function () {
  11. if (document.addEventListener) {
  12. return function(element, event, handler) {
  13. element.addEventListener(event, handler, false);
  14. };
  15. } else {
  16. return function(element, event, handler) {
  17. element.attachEvent('on' + event, handler);
  18. };
  19. }
  20. })();