美文网首页
JS 函数柯里化的简单探究

JS 函数柯里化的简单探究

作者: 弱冠而不立 | 来源:发表于2020-11-01 21:28 被阅读0次

什么是柯里化?

柯里化(Currying)是一种对于函数的高阶转换,它指的是将一个函数从可调用的 fn(a, b, c) 转换成可调用的 fn(a)(b)(c)

如何进行柯里化

举个例子,我们有个普通的 ajax 函数来发起请求

function ajax(method, url, data=null) {
  let xhr = new XMLHttpRequest();
  xhr.open(method, url, true);
  xhr.send(data);
}
  1. 在进行柯里化之前,我们先创建一个最简单版本的 curry 函数来将普通函数转换成柯里化的函数
      function curry(fn) {
       return function(method) {
        return function(url) {
          return function(data) {
            return fn(method, url, data);
          }
        }
      }
    }
    
  2. 使用这个最简单版本的 curry 函数来进行柯里化,并使用这个柯里化后的函数
     let ajaxCurried = curry(ajax);
     ajaxCurried("get")("http://a.itying.com/api/productlist")()
    
和用fn(a, b, c) 格式调用的函数是一样能得到结果的

柯里化有什么用?

貌似fn(a, b, c) 调用和 fn(a)(b)(c) 调用没什么区别,但是当函数需要一定程度但不完全复用时,柯里化后的函数的优势就显而易见了。例如以上面的代码为例,我们现在请求的接口需要替换成另一批,但是方法还是get,传统的函数调用写的就是:

let get_xx1 = ajax('get','api/xx1');
let get_xx2 = ajax('get','api/xx2');

而采用柯里化后的函数就可以这样:

let getAjax = ajaxCurried("get");
getAjax("api/xx1");
getAjax("api/xx2");

柯里化后的函数就能根据调用的特定参数进行我们想要的复用。例如:

//get请求 可更换 baseURL
let curriedAjaxGet = ajaxCurried("get")
curriedAjaxGet(baseURL1)()
curriedAjaxGet(baseURL2)()

// 基于 BaseURL 的 post 请求, 可添加 data 参数
/let curriedAjaxGetBaseURL = ajaxCurried("post")("xxxx")
curriedAjaxGetBaseURL(data1)
curriedAjaxGetBaseURL(data2)

相关文章

  • JS 函数柯里化的简单探究

    什么是柯里化? 柯里化(Currying)是一种对于函数的高阶转换,它指的是将一个函数从可调用的 fn(a, b,...

  • [译]JavaScript中的函数柯里化

    原文 Currying in JS 函数柯里化 函数柯里化以Haskell Brooks Curry命名,柯里化是...

  • js柯里化

    标签: js柯里化 js柯里化 柯里化是什么在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成...

  • 简单理解JavaScript中的柯里化和反柯里化

    简单理解JavaScript中的柯里化和反柯里化 前言 本文旨在让大家简单理解柯里化和反柯里化,这里不做深入探究,...

  • 简单理解JavaScript中的柯里化和反柯里化

    简单理解JavaScript中的柯里化和反柯里化 前言 本文旨在让大家简单理解柯里化和反柯里化,这里不做深入探究,...

  • JS函数式编程之柯里化

    JS函数式编程之柯里化 为什么要了解柯里化 柯里化是函数式编程必须要使用的. 这里我们就先介绍下什么是柯里化, 然...

  • JS_函数柯里化

    JS_函数柯里化 与函数绑定密切相关的主体是函数柯里化(function currying),它用于创建已经设置好...

  • JS柯里化

    柯里化简介 js柯里化(currying)又译为卡瑞化或加里化,是把接受多个参数的函数,变为可接受多次调用的函数,...

  • JS函数柯里化

    函数柯里化:提高函数的适用性,同时降低函数的通用性;其实现方式就是固定一些可以预期的参数,然后返回一个特定的函数 ...

  • js函数柯里化

    什么是函数柯里化? 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函...

网友评论

      本文标题:JS 函数柯里化的简单探究

      本文链接:https://www.haomeiwen.com/subject/udcguktx.html