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

  • 相关阅读:
    Mac下github项目检出与提交
    Mac下Vim配置语法高亮
    Mac下JDK安装配置
    shiro实现app和web统一登录
    mysql优化30条建议
    log4j配置说明
    lambda遍历的精简
    lambda表达式详解
    dubbo
    java8新特性lamda表达式在集合中的使用
  • 原文地址:https://www.cnblogs.com/-cherish/p/6679032.html
Copyright © 2011-2022 走看看