一个小例子,观察脚本语言闭包的效果

来源:互联网 发布:狙击枪 微型导弹 知乎 编辑:程序博客网 时间:2024/05/01 01:11

闭包,是指脚本语言中,一个函数可以访问其他函数作用域内的变量。一般而言,当一个函数结束后,变量就随之释放了,但是闭包不同,下面看两个例子。
例子1,闭包访问函数局部变量:

<!DOCTYPE><html><head>    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />    <title></title>    <script>    window.onload = function() {        var aLi = document.getElementsByTagName('li');        for (var i = 0; i < aLi.length; i++) {            (function() {                aLi[i].onclick = function() {                    alert(i);                };            })();        }    };    </script></head><body>    <ul>        <li>123</li>        <li>456</li>        <li>789</li>    </ul></body></html>

例子2,闭包访问参数:

<!DOCTYPE><html><head>    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />    <title></title>    <script>    window.onload = function() {        var aLi = document.getElementsByTagName('li');        for (var i = 0; i < aLi.length; i++) {            (function(i) {                aLi[i].onclick = function() {                    alert(i);                };            })(i);        }    };    </script></head><body>    <ul>        <li>123</li>        <li>456</li>        <li>789</li>    </ul></body></html>

观察结果,可以发现,例子1中的值始终是3,而例子2中的值,则是0, 1, 2。由此可以体会一下闭包的效果。

0 0