首页 » 文章 » 文档 » js 基础问题 » 什么是闭包?闭包会用在哪里?

什么是闭包?闭包会用在哪里?

闭包,作用域应用的特殊情况,有两种表现:

  • 函数作为参数被传递
  • 函数作为返回值被返回
// 函数作为返回值
function create() {
    const a = 100
    return function () {
        console.log(a)
    }
}

const fn = create()
const a = 200
fn() //100
//函数作为参数被传递
function print(func) {
    const b = 200
    func()
}

const b = 100

function func() {
    console.log(b)
}

print(func) // 100

闭包:自由变量的查找,是在函数定义的地方,向上级作用域查找,不是在执行的地方查找!!!

实际开发中闭包的应用

  • 隐藏数据,只提供 API
  • 如做一个简单的 cache 工具
// 闭包隐藏数据,只提供API,类似一个简单的cache工具

function createCache() {
    const data = {} //闭包中的数据被隐藏,不被外界访问

    return {
        set: function (key, val) {
            data[key] = val //缓存数据
        },

        get: function (key) {
            return data[key]
        }
    }
}


const c = createCache()
c.set('a',100)
console.log(c.get('a')) // 100

»js 基础问题

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Scroll to Top