zoukankan      html  css  js  c++  java
  • js闭包与柯里化

    闭包

    什么是闭包?

    引用《javaScript高级教程》中的概念,闭包是指有权访问另一个函数作用域中的变量的函数。

    简单描述就是在函数A中,返回一个函数B,函数B可以直接访问函数A中的变量,那么函数B就称为函数A的闭包。

    案例:

    function calculator(){
        let i = 0
        
        return function(){
            console.log(i)
            i++
        }
    }
    let add = calculator()
    add() //0
    add() //1
    add() //2

    优点:

    1、实现缓存,不被垃圾回收

    2、保护函数内的变量安全,不被外界所污染

    3、利用闭包特性实现柯里化

    缺点:

    1、内存消耗,闭包产生的变量无法销毁,解决方法是可以在使用完变量后手动为它赋值为null,避免内存泄露。

    2、性能问题,由于闭包内部变量优先级高于外部变量,在查找上要多查一层作用域链,对速度有影响。

    柯里化

    什么是柯里化?

    柯里化(Currying)是把接受多个参数的函数转变为单一参数的函数,并且返回接受余下的参数且返回结果的新函数的技术。

    简单描述:

    1、通过闭包管理

    2、支持链式调用

    3、每次运行返回一个 function

    function calculator(type){
        return function(text){
            return typeof text === type
        }
    }
    const string = calculator("string")
    const number = calculator("number")
    console.log(string("123")) //验证是否为字符串类型
    console.log(number(123)) //验证是否为number类型

    使用的好处:

    1、参数复用

    2、提前确认

    3、延迟运行

  • 相关阅读:
    Oracle导数据到SQL server的方法总结
    linux vmware 安装步骤
    linux user
    linux 下载jdk
    Jaxb2实现JavaBean与xml互转的方法详解
    idea 远程代码调试
    Java一次读取文本文件所有内容
    mysql 8 server windows 安装经验分享
    java和mysql的length()区别及char_length()
    Java web 强制301跳转
  • 原文地址:https://www.cnblogs.com/styleFeng/p/14281131.html
Copyright © 2011-2022 走看看