前端基础系列之js-闭包

23 阅读1分钟

闭包: 有权访问另一个函数作用域中的变量的函数

function price() { // 函数total使用了函数price的变量count
    var count = 1
    return function total() {
        return count++
    }
}
let result = price() // 我们在函数外部引用,就形成闭包
console.log(result()) // count-3
console.log(result()) // count-4
// count变量不会被销毁,保留着计算值

应用 封装私有变量

function price() {
    var count = 1
    return {
        total(){
            return count
        }
        add(){
            count++
        }
    }
}
let result = price()
result.total() // count-1
result.add() 
result.total() // count-2
//外部代码根本无法访问count

优点:缓存一个变量,减少全局变量使用 缺点:占用内存,内存泄漏;可外部调用,访问到内部变量修改