概念
将接收多个参数的函数变成一系列接收单个参数的函数。
作用
- 参数复用
- 延迟执行
应用场景
计算打折的商品价格 -> 参数复用
//普通写法
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);
};
}
})();