闭包

闭包指调用另一个函数作用域内的变量一个函数

作用为扩展函数内部变量作用范围,也用于处理异步函数造成的数据不同步,如点击事件,定时器,ajax等

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <ul>
            <li>大佬救我</li>
            <li>大佬救我</li>
            <li>大佬救我</li>
            <li>大佬救我</li>
            <li>大佬救我</li>
        </ul>
        <script type="text/javascript">
            var lis = document.getElementsByTagName('li');
            // 打印序列号
            for (var i = 0; i < lis.length; i++) {
                lis[i].onclick = function() {
                    lis[i].index = i;
                    console.log(this.index);
                    // console.log(i);直接打印不行,for立即执行到i=4,onclick事件不会立即触发,需点击
                }
            }
            // 采用闭包后可直接打印i为序列号
            for (var i = 0; i < lis.length; i++) {
                (function(i) {
                    lis[i].onclick = function() {
                        console.log(i);
                    }
                })(i)

            }
        </script>
    </body>
</html>

 

上一篇:LIS LCS LCIS


下一篇:偶遇递归树