zoukankan      html  css  js  c++  java
  • 函数式编程 -- 闭包

    闭包

    • 闭包:延长函数内部属性的作用域范围

    • 本质:函数在执行的时候会放到一个执行栈上,当函数执行完毕后,会从执行栈上移除,但是堆上的作用域成员因为被外部引用而不能释放,因此内部函数依然可以访问函数的成员

    // once函数中使用到闭包
    function once(fn){
        let done = false
        // 外部函数once返回了一个内部函数,内部函数对外部函数的成员done进行了引用,此时就形成了闭包,外部函数的成员在函数执行完成后不会被释放
        return function(){
            if(!done){
                done = true
                return fn.apply(this,arguments)
            }
        }
    }
    let pay=once(function(money){
        console.log("支付:" + money + "RMB"
    })
    
    pay(5)
    pay(5)
    
    // 输出
    // 支付:5RMB
    
  • 相关阅读:
    Celery
    高并发架构
    websocket
    git分支管理
    auto_ptr与shared_ptr
    UDP信号驱动IO
    TCP带外数据
    UDP广播
    获取mac地址
    char数组初始化
  • 原文地址:https://www.cnblogs.com/MissSage/p/14875771.html
Copyright © 2011-2022 走看看