在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。这个技术由 Christopher Strachey 以逻辑学家 Haskell Curry 命名的,尽管它是 Moses Schnfinkel 和 Gottlob Frege 发明的。
柯里化是指将使用多个参数的函数转换成一系列使用一个参数的函数的技术,或则你可以理解为js柯里化是逐步传参,逐步缩小函数的适用范围,逐步求解的过程。
我们写一个函数,将函数的几个参数相加,返回结果!那我们写的函数如下:
var concatWords = function (a, b, c) {
return a+b+c;
};
函数柯里化呢?是分部求解,先传一个a参数,再传一个b参数,再传一个c参数,最后将这三个参数相加!
var concatWordsCurrying = function(a) {
return function (b) {
return function (c) { return a+b+c; };
};
};
结果
console.log(concatWords("foo ","bar ","baza")); // foo bar baza
console.log(concatWordsCurrying("foo ")); // [Function]
console.log(concatWordsCurrying("foo ")("bar ")("baza")); // foo bar baza 函数链式调用