什么是闭包?
闭包是一个函数,一个作用域可以访问另一函数的局部变量,就会产生闭包
被访问的局部变量所在的函数叫做闭包函数
闭包的作用是什么呢?
延伸了局部变量的作用范围。
一般函数执行完后,函数内部的局部变量会被销毁,但是由于闭包,使得局部变量的寿命延长了
同时,我们可以在函数以外的地方使用局部变量,所以闭包延伸了局部变量的作用范围
闭包的使用
1 实现li列表的点击事件
var lis = document.getElementsByTagName('li') for(var i = 0; i < lis.length; i++) { (function(i) { lis[i].onclick = function() { console.log(lis[i].innerHTML) } })(i) } // 使用闭包实现每隔三秒加1 for(var i = 0; i< lis.length; i++) { (function(i) { setInterval(() => { lis[i].innerHTML ++ }, 3000); })(i) }
2 实现打车价格的计算
var car = (function() { var start = 12 var total = 0 return { money: function(s) { if(s > 3) { total = (s-3)*5 + start }else { total = start } return total }, yd: function(flag) { ///拥堵费用 return flag ? total + 10 : total } } })() console.log(car.money(5)) // 22 console.log(car.yd(true)) // 32