javascript 闭包(closure)

<script type="text/javascript">
    //闭包(closure):内层函数可以引用存在于包围它的函数内的变量,即使外层函数的执行已经结束
    //注意内层函数引用的外层函数内的变量是外层函数执行结束后的最终值
    test(1);
    function test(a) { //外层函数
        alert(a+' 外层函数开始执行');
        setTimeout(function(){//内层函数
            alert(a+' 虽然外层函数执行完毕,但是内层函数依然可以引用外层函数内的变量');
        },5000);
        alert(a+' 外层函数执行完毕');
        a +=1;
    }
    alert('外层函数确实执行完毕');
</script>

<script type="text/javascript">
    //一个有趣的例子
    function add(b) {
        return function (c) {
            return b + c;
        }
    }
    var test = add(1);
    alert(test(1));
</script>

 

posted @ 2015-03-16 22:04  扬空  阅读(199)  评论(0编辑  收藏  举报