作者: 我的好昵称 | 来源:发表于2018-12-05 15:48 被阅读0次

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>闭包</title>
    <script type="text/javascript">
    /*
    闭包的本质就是函数嵌套,就是在函数里面定义函数,
    内部函数可以引用外部函数的参数和变量
    参数和变量不会被垃圾回收机制给回收
    闭包的用途:可以存循环的索引值、做私有变量计数器
    /
    /

    //闭包的一般写法
    function aa(b){
    var a = 12;

            function bb(){
                alert(a);
                alert(b);
            }
    
            return bb;
        }
    
        var cc = aa(24);*/
    
        
        //闭包的封闭函数写法
        var cc = (function(b){
            var a = 12;
    
            function bb(){
                alert(a);
                alert(b);
            }
    
            return bb;
        })(24);
    
        cc();
        
    
        /*
        //只能调用一次的闭包
        (function(b){
            var a = 12;
    
            function bb(){
                alert(a);
                alert(b);
            }
    
            return bb;
        })(24)();
        */
    </script>
    

    </head>
    <body>

    </body>

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>闭包存循环的索引值</title>
    <style type="text/css">
    li{
    height: 30px;
    background-color: gold;
    margin-bottom: 10px;
    }
    </style>
    <script type="text/javascript">
    //闭包的用途:存循环的索引值
    window.onload = function(){
    var aLi = document.getElementsByTagName('li');
    // alert(aLi.length);//8

            for(var i=0; i<aLi.length; i++){
                /*
                aLi[i].onclick = function(){
                    alert(i);//每个li都弹出8,因为点击时循环已完毕,i最后为8
                }
                */
    
                (function(k){//这里的k是形参
                    aLi[k].onclick = function(){
                        alert(k);//弹出每个li的索引值
                    }
                })(i);//这里的i是实参
            }
        }
    </script>
    

    </head>
    <body>
    <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
    <li>7</li>
    <li>8</li>
    </ul>
    </body>
    </html>

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>闭包做私有变量计数器</title>
    <script type="text/javascript">
    //闭包的用途:私有变量计数器
    var count = (function(){
    var a = 0;

            function bb(){
                a++;
                return a;
            }
    
            return bb;
        })();
        
        //每调用一次count,a就自增一次
        alert(count());//1
        alert(count());//2
    
        var c = count();
        alert(c);//3
    </script>
    

    </head>
    <body>

    </body>
    </html>

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>获取地址栏参数</title>
    <script type="text/javascript">

        window.onload = function(){
            //url?aa=tom#12
            var data = window.location.search;//?aa=tom
            var hash = window.location.hash;//#12
            alert(hash);//#12
    
            var oSpan = document.getElementById('span01');
            // alert(data);//?aa=tom
    
            var arr = data.split('=');
            // alert(arr);//?aa,tom
    
            var name = arr[1];
            oSpan.innerHTML = name;
        }
    </script>
    

    </head>
    <body>
    <div>欢迎<span id="span01"></span>访问我的主页</div>
    </body>
    </html>

    相关文章

      网友评论

          本文标题:

          本文链接:https://www.haomeiwen.com/subject/mkkwcqtx.html