zoukankan      html  css  js  c++  java
  • js 闭包

    能读取其他函数内部变量的函数====即定义在函数内部的函数

    作用:

      1:能读取函数能不的变量

      2:让这些变量的值永远在内存中

    例子:

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <body>
    <div>
        <ul>
            <li id="a1">aa</li>
            <li id="a2">aa</li>
            <li id="a3">aa</li>
        </ul>
    </div>
    </body>
    <script type="text/javascript">
        function addEvent() {
            for (var i = 1; i < 4; i++) {
                var id = document.getElementById("a" + i);
                id.onclick = function () {
                    alert(i);
                };
            }
        }
        addEvent();
    </script>
    </html>

    由于 for循环是立即执行,onclick 不是立即执行,所有最后无论点击那个 li 输出都是4;

    function addEvent() {
            for (var i = 1; i < 4; i++) {
                var id = document.getElementById("a" + i);
                id.onclick = (function (i) {
                        alert(i);
                })(i);
            }
    }

    立即执行,输出1,2,3,点击之后没有反应

    function addEvent() {
            for (var i = 1; i < 4; i++) {
                var id = document.getElementById("a" + i);
                id.onclick = (function (i) {
                        return function () {
                            alert(i);
                        }
                })(i);
            }
        }

    点击之后输出对应的 id

  • 相关阅读:
    实现JavaScript自定义函数的整合、链式调用及类的封装
    jQuery事件
    jQuery特效
    jQuery基础细节
    CSS3盒模型
    主流清浮动方法
    JavaScript 执行环境及作用域
    JavaScript 参数传递与变量复制
    PHP雪花背景验证码
    Linkis 0.9.2 版本发布
  • 原文地址:https://www.cnblogs.com/-cherish/p/6679032.html
Copyright © 2011-2022 走看看