关于javascript:JS闭包

1次阅读

共计 579 个字符,预计需要花费 2 分钟才能阅读完成。

一、什么是闭包?

作用域利用的非凡状况(有两种):
函数作为参数被传递
函数作为参数被返回

1. 函数作为参数被传递:

function print(fn){
    let a = 200
    fn()}
let a = 100
function fn(){console.log(a)
}

print(fn)

//100

2. 函数作为参数被返回

function create(){
    let a = 100
    return function(){console.log(a)
    }
}

let fn = create()
let a = 200
fn()

//100

3. 自在变量

什么是自在变量?

以后作用域没有定义然而应用了,须要咱们去沿着作用域链查找的变量。

自在变量的查找规定?

在函数 定义 的中央,向下级作用域查找,而不是执行的中央!!!

二、理论开发过程中闭包的利用

比方暗藏数据(做一个简略的 cache 工具)

    function createCache(){let data = {}  // 闭包中的数据,被暗藏,不被外界拜访
        return {set(val, key){data[val] = key
            },
            get(key){return data[key]
            }
        }
    }

    let c = createCache()
    c.set('a', 100)
    console.log(c.get('a'))
    //100(这样就只能通过 c.get 和 c.set 来拜访和设置 data, 而不能再函数外随便批改和获取 data 的值)
正文完
 0