• js闭包


    闭包

     ***代码

    //**扩展点
    //1.函数的特点: 函数运行后函数内分配的变量都会销毁,除非有返回值的变量才不会销毁
    //2.js中由于链式作用域,子对象会一级一级地向上寻找所有父对象的变量。父对象的所有变量,对子对象都是可见的,反之就不行。
    //3.函数声明时间,作用域就决定过了,所以不取决于它执行的时候,只取决于它声明的时候,这就是19行弹出来的是1,而不会是10了;


    //**闭包的概念:
    // 所谓的闭包并不是函数包含函数,闭包是形成了一个封闭的环境,闭包就是能够读取其他函数内部变量的函数
    //,闭包可以是函数的内部和外部连接的桥梁,任何函数都会形成自己的闭包环境,都有自己的AO链.


    //**闭包的作用
    // 1.一个是可以读取函数内部的变量
    // 2.另一个就是让这些变量的值始终保持在内存中


    //**闭包注意的问题
    // 话题:代码中a是c的父函数,而c被赋给了一个全局变量(指的是在window中了),
    // 这导致c始终在内存中,而c的存在依赖于a,因此a也始终在内存中,不会在调用结束后,
    // 被垃圾回收机制(garbage collection)回收;
    // 1.所以导致的问题是内存消耗太大,造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,
    // 将不使用的局部变量全部删除。
    // 2.闭包会在父函数外部,改变父函数内部变量的值。如果你把父函数当作对象(object)使用,把闭包当作它的公用方法,把内部变量当作它的私有属性,这时一定要小心,
    // 不要随便改变父函数内部变量的值。


    //**闭包和对象
    // 闭包是穷人的对象,对象是穷人的闭包,闭包和对象只是实现的方式不同罢了;
    //知识点:
    //19行函数调用会弹出1,有两个回答:
    //1.是**扩展点3中提到的.
    //2.是因为后加加是在语句运行完后再加的。

  • 相关阅读:
    算法竞赛入门经典习题2-3 韩信点兵
    ios入门之c语言篇——基本函数——5——素数判断
    ios入门之c语言篇——基本函数——4——数值交换函数
    144. Binary Tree Preorder Traversal
    143. Reorder List
    142. Linked List Cycle II
    139. Word Break
    138. Copy List with Random Pointer
    137. Single Number II
    135. Candy
  • 原文地址:https://www.cnblogs.com/zhuzhu88/p/6675168.html
Copyright © 2020-2023  润新知