zoukankan      html  css  js  c++  java
  • for循环立即执行和不立即执行,js闭包

    <script type="text/javascript" src="jquery-2.1.1.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
    
            /**for循环立即执行(i值挨个变化,已经执行),for循环里面的alert方法也立即执行(i值挨个变化,已经执行)**/
            for (var i = 0; i < $("p").length; i++) {
                alert(i);
            }
    
            /**for循环立即执行(i值挨个变化,已经执行),for循环里面的点击事件不立即执行*(i值变成for循环终止值)*/
            for (var i = 0; i < $("p").length; i++) {
                //eq(i)立即执行,click事件里的方法不立即执行,每个对象发生点击事件时i都为值length
                $("p").eq(i).click(function () {
                    alert($(this).index() + " ; index: " + i);
                });
            }
    
            /**解决方法1:将计数器改为用let声明**/
            for(let i =0;i < $("p").length;i++){
                $("p").eq(i).click(function(){
                    alert($(this).index() + " ; index: "+i); 
                });
            }
    
            /**解决方法2:使用闭包**/
            for (var i = 0; i < $("p").length; i++) {
                $("p").eq(i).click(function (n) {
                    return function () {
                        alert($(this).index() + " ; index: "+ n);
                    }
                }(i)); //此处i立即执行,将i作为click事件对应的处理函数的实际参数,并将内部处理过程return出来,迫使click里的两个function都立即执行
            }
        });
    </script>
    </head>
    <body>
        <p>This is a paragraph.</p>
        <p>This is a paragraph.</p>
        <p>This is a paragraph.</p>
    </body>
    

      

  • 相关阅读:
    C# 不用添加WebService引用,调用WebService方法
    贪心 & 动态规划
    trie树 讲解 (转载)
    poj 2151 Check the difficulty of problems (检查问题的难度)
    poj 2513 Colored Sticks 彩色棒
    poj1442 Black Box 栈和优先队列
    啦啦啦
    poj 1265 Area(pick定理)
    poj 2418 Hardwood Species (trie树)
    poj 1836 Alignment 排队
  • 原文地址:https://www.cnblogs.com/Arlar/p/6248653.html
Copyright © 2011-2022 走看看