js垃圾,回调函数, 立即调用函数

本文详细讲解了JavaScript的垃圾回收算法(计数法和标记清除)、全局与局部变量的区别,以及如何手动释放变量。通过实例探讨了闭包、回调函数和局部变量累加。重点展示了如何通过函数作用域和闭包影响变量生命周期。
摘要由CSDN通过智能技术生成

 js垃圾(程序不用了的变量)回收:就是从内存释放不用的空间

       js解析引擎自带垃圾回收算法   1.计数法  2.标记清除

       全局变量不会被自动回收

       局部变量才会被垃圾回收

   
        var name = "张三";

        name = undefined;//手动释放空间


        var per = {};

        per = null;//手动释放引用数据类型


        function print(){

            var test1 = "l1";//局部变量,当函数调用完以后,内部的变量会被自动回收

                                // 如果函数内部的局部变量在其他代码块有使用,也不会被自动回收


        }

        print()

  回调函数:把函数作为参数传递给另一个函数

        函数内部的变量可以通过回调函数传递给另一个函数     

  function counta(callback){

            var name = 10;

            var age = 20;

            callback(name,age);

        }



        function f(x,y){

            console.log("f",x,y);

        }



        // counta(f);

  闭包:函数内部返回一个函数

        把函数内部的变量变成全局变量       

 function f1(){

            var x = 10;

            function f1_2(){

                console.log(x);

            }

            f1_2()

        }
       var f2 = f1();//等价于 f2 = function(){console.log(x)}

        f2()// f2是全局变量,所以f1 return的函数内部的变量不会被自动回收

实现局部变量的累加

   

     function add(){

            var num = 1;

            return function(){

                num ++;

                return num;

            }

        }



        let f3 = add();//等价于f3 = function(){num ++;return num;}

        f3()

        f3()

        console.log(f3())//4

       立即调用函数表达式

   let f4 = function(){

            console.log("f4")

        } ()

       

        (function(x){

           console.log(x)

        }(3))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值