闭包的理解

闭包是JavaScript中的一个重要概念,它允许函数访问并保留其声明时的作用域中的变量。当内层函数引用外层函数的标识符时,就形成了闭包。闭包的主要作用是保持变量的持久化,避免被垃圾回收,同时提供了一种数据安全的方式,减少全局污染。然而,过度使用闭包可能导致内存消耗增加。闭包在控制台的scope中表现为一个独立的作用域,可用于实现特定的数据隔离和封装效果。
摘要由CSDN通过智能技术生成

标准说法:「函数」和「函数内部跨作用域能访问到的变量」的总和,就是一个闭包。

闭包使得函数内部可以访问该函数声明时所处作用域中的变量

通俗说法:函数嵌套的时候,内层函数访问外层函数的标识符就是一个闭包。

闭包的作用,就是使得原本执行环境出栈后会销毁的标识符得到了保留,形成了一个独立的作用域

// 1.0 一定有一个外层的函数
function outFn(x) {
// 2.0 一定会返回一个内层函数
    return function(y) {
// 3.0 内层函数使用了外层函数的标识符
        return x + y
    }
}

var innerFn = outFn(100)
innerFn(123) // 223
innerFn(666) // 766

闭包的优缺点

// 优点

// 1.0 闭包使得原本执行环境出栈后会销毁的标识符得到了保留

// 2.0 延展了作用域,在控制台的sources的scope(作用域)中看到了一个 closure

// 3.0 实现了数据安全,减小了全局污染,可以创建多个闭包

// 缺点

// 1.0 原本应该销毁的标识符得到了保留,导致内存增加,消耗性能(所以不要滥用闭包)

// 2.0 书写起来麻烦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值