2018-12-05  本文已影响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>

上一篇 下一篇

猜你喜欢

热点阅读