闭包的学习例子

来源:互联网 发布:上海争游网络首页 编辑:程序博客网 时间:2024/06/03 23:15
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Document</title></head><body>    <ul id="ul">        <li>0</li>        <li>1</li>        <li>2</li>    </ul>    <script type="text/javascript">        //闭包        for(var i = 1;i<=5;i++){            (function(j){                setTimeout(function timer(){                    console.log(j);                },j*1000);            })(i)        }        //块级作用域        for(let i =1;i<5;i++){            setTimeout(function timer(){                console.log(i);            },i*1000);        }        //事件代理        var ul = document.getElementById("ul");        var li = document.getElementsByTagName("li");        ul.addEventListener('click',function(ev){            var ev = ev || window.event;            var target = ev.target || ev.srcElement;            for(var i = 0;i<li.length;i++){                if(li[i] == target){                    alert(i)                }            }        })        //闭包        var li = document.getElementsByTagName("li")        for(var i = 0;i<li.length;i++){            li[i].onclick = (function(i){                return function(){                    alert(i)                }            })(i);        }        //块级作用域        var li = document.getElementsByTagName("li")        for(let i = 0;i<li.length;i++){            li[i].onclick = function(){                alert(i)            };        }    </script></body></html>