一个函数的作用域可以访问另一个函数的局部变量,这个变量所在的函数就是闭包函数
5.1变量的作用域复习
变量根据作用域的不同分为两种:全局变量和局部变量。
- 函数内部可以使用全局变量。
- 函数外部不可以使用局部变量。
- 当函数执行完毕,本作用域内的局部变量会销毁。
5.2什么是闭包
闭包(closure)指有权访问另一个函数作用域中变量的函数。
简单理解就是 ,一个作用域可以访问另外一个函数内部的局部变量。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rc1q9iH0-1650887535230)(…/…/…/myJS%E9%AB%98%E7%BA%A7/JavaScript%20%E9%AB%98%E7%BA%A7_day03/4-%E7%AC%94%E8%AE%B0/images/img3.png)]
5.3闭包的作用
- 作用:延伸变量的作用范围。
- 变量不会销毁(核心作用)
- 变量什么时候不会销毁:变量被引用并且有内存
- 闭包的缺点:内存泄漏
- 闭包的场景:
var liList = ul.getElementsByTagName('li') for(var i=0; i<6; i++){ !function(ii){ //立即执行函数 liList[ii].onclick = function(){ alert(ii) // 0、1、2、3、4、5 } }(i) }
function fn() {
var num = 10;
function fun() {
console.log(num