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.作用:

      参数服用

      计算延时执行

      动态创建函数

  • 相关阅读:
    vue全局启用 emulateJSON 选项
    vue全局配置数据接口的根域名
    CSS实现按钮YES-NO按钮+Jquery获取按钮状态。
    Redis命令
    在js中获取 input checkbox里选中的多个值
    Python中常见字符串去除空格的方法总结
    e.target.value和this的区别
    用脚本来运行scrapy crawl ...
    生成器的两种方式
    python中ord()函数,chr()函数,unichr()函数
  • 原文地址:https://www.cnblogs.com/jiebba/p/8568242.html
Copyright © 2011-2022 走看看