优秀的编程知识分享平台

网站首页 > 技术文章 正文

js函数柯里化(JS函数柯里化好处)

nanyue 2024-09-01 20:28:29 技术文章 3 ℃

函数柯里化(function currying),它用于将一个多参数的函数分解;基本方法是使用一个闭包返回一个函数;比如将下面函数柯里化

function add (a, b) {
 return a + b;
}
add(1, 2) // 3

柯里化后:

function add (a) {
  return function (b){
    return a+b
	}
}
add(1)(2) // 3

es6写法:

const add=a=>b=>c=>a+b+c
add(1)(2)(3) //6

这样写后有什么用处呢?

//一、参数复用
var add=a=>b=>a+b
var a=add(5)//固定第一个参数为5
a(1)//6
a(2)//7
a(3)//8

//二、延迟执行
var add=a=>b=>a+b
var a=add(5)
a    // b=>a+b 返回的新函数先不执行
....
a(5)  //10 执行时机

//三、逻辑复用 详见下面部分vue源码

VUE源码中多处使用了柯里化技巧 --version: 3.3.0-beta.5

//vue.global.js
function makeMap(str, expectsLowerCase) {
 const map2 = /* @__PURE__ */ Object.create(null);
 const list = str.split(",");
 for (let i = 0; i < list.length; i++) {
  map2[list[i]] = true;
 }
 return expectsLowerCase ? (val) => !!map2[val.toLowerCase()] : (val) => !!map2[val];
}
//使用---
var isNonTrackableKeys =  makeMap(`__proto__,__v_isRef,__isVue`);
isNonTrackableKeys('xxx')//false
isNonTrackableKeys('__proto__')//true

VUE源码截图

最近发表
标签列表