要了解闭包,先得了解变量的作用域,分为全局作用域和局部作用域,JS中函数内部可以访问函数外部的变量,但函数外部却无法访问函数内部的变量;
闭包就是能够访问其他函数内部的变量的函数,闭包的本质就是把函数内部和外部连接起来;
闭包有一个封闭性的特点:就是一旦形成闭包,那么外界就无法访问到闭包里面的数据
闭包的优缺点
优点:可以模仿块级作用域,把变量保存在内存中,防止全局变量污染,就是减少创建全局变量,减少传递给函数的参数量;
缺点:虽然说防止了全局变量污染,但是这样容易导致内存泄漏,会让使用过的变量无法回收,一直占着内存;
应用场景:1.SetTimeout:原生的setTimeout传递的函数不能带参数,通过闭包可以实现传参效果。
2.回调:定义一个行为,然后把它关联到某个用户事件上。代码通常会作为一个回调绑定到事件上;
闭包是JavaScript中的一个重要概念,它允许函数访问并操作外部作用域的变量,同时保持内部状态的封闭性。闭包的优点包括模仿块级作用域、防止全局变量污染,常用于减少全局变量的使用和参数传递。然而,过度使用闭包可能导致内存泄漏,因为闭包内的变量无法被正常回收。常见的闭包应用场景有在SetTimeout中传递参数以及作为事件处理的回调函数。
3155

被折叠的 条评论
为什么被折叠?



