闭包精细版

什么情况会触发闭包:
当多个函数嵌套,里面的函数执行被保存到了外面函数的外面(全局)
里面的函数在执行时任然可以调用原来它在的那个函数的变量

    function test() {
        var temp = 100;

        function a() {
            console.log(temp);
        }
        return a;
    }
    var demo = test();
    demo();

	var demo;
    function test() {
        var abc = 100;

        function a() {
            console.log(abc);

        }
        demo = a;
    }
    test();
    demo();


    var count = 0;

    function test() {
        count++;
        console.log(count);
    }
    test();
    test();
    test();

	function add() {
        var num = 0;

        function a() {
            console.log(++num);

        }
        return a;
    }
    var myAdd = add();
    myAdd();
    myAdd();
    myAdd();

栗子

		function test() {
        var food = 'apple';
        var obj = {
            eatFood: function() {
                if (food != "") {
                    console.log("i am eating " + food);
                    food = '';
                } else {
                    console.log("There is nothing! empty!");

                }
            },
            pushFood: function(myFood) {
                food = myFood;
            }
        }
        return obj;
    }
    var person = test();
    person.eatFood();
    person.eatFood();
    person.eatFood('banana');
    person.eatFood();

栗子2

	function test(){
        var arr=[];
        for(var i=0;i<10;i++){
            arr[i]=function (){
                console.log(i);
            }
        }
        return arr;
    }
    var myArr=test();
    for(var j=0;j<10;j++){
        myArr[j]();
    }

立即执行函数

    var num = (function(a, b) {
        return a + b;
    }(1, 2))

//(立即执行函数

    var num = (function(a, b) {
        return a + b;
    }(1, 2))

    (function(){

    }());

    (function(){

    })();

    // 只有表达式才能被执行

    function test(){

    }
    test();

    // 一旦一个表达式被执行之后它就失去了对函数的索引(失去了定义这个函数的功能)
    var demo=function(){
        console.log('a');
        
    }()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值