闭包

什么是闭包?

闭包是一个函数,一个作用域可以访问另一函数的局部变量,就会产生闭包

被访问的局部变量所在的函数叫做闭包函数

闭包的作用是什么呢?

延伸了局部变量的作用范围。

一般函数执行完后,函数内部的局部变量会被销毁,但是由于闭包,使得局部变量的寿命延长了

同时,我们可以在函数以外的地方使用局部变量,所以闭包延伸了局部变量的作用范围

闭包的使用

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

 

posted @ 2020-02-02 16:34  jsThin  阅读(100)  评论(0编辑  收藏  举报