• jQuery闭包理解


    参考https://tylermcginnis.com/async-javascript-from-callbacks-to-promises-to-async-await/

    闭包定义-是指有权访问另一个函数作用域中的变量的函数。

    让这些变量的值始终保持在内存中。

    闭包就是能够读取其他函数内部变量(局部变量)的函数

    使用场景——函数作为返回值,函数作为参数传递。

    返回值

     

     

     参数传递

    上面的写法其实是最原始的写法,而在实际应用中,会将闭包和匿名函数联系在一起使用

    形成闭包要符合这三个条件,而且三者缺一不可:

    • 1、函数A内部直接或间接返回一个函数B
    • 2、B函数内部使用着A函数的私有变量
    • 3、A函数外部有一个变量接收B函数

     闭包主要的三个特点

    • 1、延长了变量的生命周期;这个特点的好处就是变量会一直存在,
    • 因此也成了一个致命的缺点:就是这个函数的执行空间不会被销毁,而当一段内存空间中有一个不会被销毁的东西一直存在,就会出现内存占用,如果过多的话,还会导致内存溢出,结果引起内存泄漏。
    • 2、可以访问函数内部的私有变量;利用这个特点,我们可以在函数外部访问到内部的数据。
    • 3、保护私有变量;这是所有函数都具备的特点之一,普通函数的内部变量是不能在外部访问的,但是闭包空间可以。

    匿名函数主要有两种常用的场景,一是回调函数,二是直接执行函数。

    ()()这种写法可以说是匿名函数的调用或者叫立即执行函数。
    <script language="javascript">
    var a = "a";
    (function(){
        var a="b";
        alert(a);
    })();
    alert(a);
    </script>

    Function 对象是JavaScript 里面的固有对象,所有的函数实际上都是一个Function 对象。
    var abc = new Function("x","y","return x*y;"); 
    alert(abc(2,3)); // "6"

    声明匿名函数---匿名函数就是没有实际名字的函数。
    var abc=function(x,y){ 
    return x+y; 
    } 
    alert(abc(2,3)); // "5"
    立即执行函数:形如 (function(){})();的一类函数;

      立即执行函数的两种写法

    • (function(){}()); W3C 建议第一种
    • (function(){})();


  • 相关阅读:
    tableView小细节
    iOS5 切换中文键盘时覆盖输入框的解决方案
    NSBundle读取txt文件,图片,plist
    iOS OC 字符串处理
    图片拉伸 几种方式
    UIAlertView小结
    新来报道
    VC6.0之Debug调试总结
    关于C++中的临时对象问题
    与临时对象的斗争(下)
  • 原文地址:https://www.cnblogs.com/sun-null/p/12368983.html
Copyright © 2020-2023  润新知