zoukankan      html  css  js  c++  java
  • js-柯里化

    1.定义:

      把一个接受多个参数的函数变成一个以原函数首参数为参数并且返回一个函数来参数其他参数。

      简单就是把一个含有多个参数的函数,变成分步来完成传参来并且返回函数的函数

    2.例子://将多个参数的函数转为单一参数的函数

    function fn(a,b,c){ return a+b+c }
    function curry(fn){
      var args = [];
      return function fe(){
        args = args.concat([].slice.call(arguments,0))
        if(args.length = fn.length) return fn.apply(null,args)
        else fe
      }
    }


    //延时执行,执行前可以做一些判断
    var state = false;
    function doSomeThing(fn,state) {
    return function () {
    if(state == true){
    return fn.apply(null,arguments)
    }else {
    return state
    }
    }
    }
    function add(a,b) {
    return a+b
    }
    console.log(doSomeThing(add,state)(1,2))
    state = true
    console.log(doSomeThing(add,state)(1,2))

    //函数节流(事件节流)  防止多次点击等事件
    function curry(fn,delay) {
    var preTime = 0
    return function () {
    var currentTime = parseInt(new Date().getTime())
    if(currentTime - preTime > delay){
    preTime = currentTime
    return fn.apply(null,arguments)
    }
    }
    }
    function add(a,b) {
    return a+b
    }
    var curry = curry(add,100)
    console.log(curry(1,2))
    setTimeout(function () {
    console.log(curry(1,2))
    },300)
    console.log(curry(1,2))

    //防止抖动  页面抖动等
    function curry(fn,delay) {
    var loop;
    return function () {
    clearTimeout(loop)
    var args = arguments
    loop = setTimeout(function () {
    fn.apply(null,args)
    },delay)
    }
    }
    function add(a,b) {
    console.log(a+b)
    }
    var curry = curry(add,100)
    curry(1,2)
    curry(3,2)








      

    3.基础:

      闭包

      函数作为返回值

      函数作为参数延时执行

      apply 函数

    4.作用:

      参数服用

      计算延时执行

      动态创建函数

  • 相关阅读:
    如何将一棵树转化成二叉树
    雪碧图的使用
    CSS简介,引入方式,文字和文本样式设置
    表格Table和表单元素
    html 中< col>标签和< colgroup>标签的区别
    Emmet的HTML语法(敲代码的快捷方式)
    抖音风格字体效果
    几种有效减小电脑系统盘使用量的方法
    ubuntu 机器名称修改方法
    Ubuntu 为基于X应用程序增加启动项的正确做法
  • 原文地址:https://www.cnblogs.com/jiebba/p/8568242.html
Copyright © 2011-2022 走看看