概念
将接收多个参数的函数变成一系列接收单个参数的函数。
作用
- 参数复用
- 延迟执行
应用场景
计算打折的商品价格 -> 参数复用
//普通写法const getPrice(discount, originPrice) => discount * originPrice;//柯尔化const getPriceCurry(discount) => (originPrice) => discount * originPrice;//计算牛奶和苹果价格//牛奶 折扣8折 原价4块 || 苹果 折扣8折 原价6块//普通milkPrice = getPrice(0.8, 4)applePrice = getPrice(0.8, 6)//柯尔化const discountHandle = getPriceCurry(0.8)milkPrice = discountHandle(4)applePrice = discountHandle(6)
封装兼容浏览器绑定函数 -> 参数复用
//普通const on = function (element, event, handler) {if (document.addEventListener) {element.addEventListener(event, handler, false);} else {element.attachEvent('on' + event, handler);}}//柯尔化const onCurry = (function () {if (document.addEventListener) {return function(element, event, handler) {element.addEventListener(event, handler, false);};} else {return function(element, event, handler) {element.attachEvent('on' + event, handler);};}})();
