zoukankan      html  css  js  c++  java
  • 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.是因为后加加是在语句运行完后再加的。

  • 相关阅读:
    KlayGE 4.0功能规划
    Kinect for Windows SDK发布
    CENTOS下用syslogng集中管理日志并压缩保存
    Eclipse+Plugin
    struts2 获取request、session的方法
    ActiveMQ使用经验
    springmock + dbutil 用来测试数据库操作
    英语学习
    如何查看eclipse版本
    jQuery插件的开发
  • 原文地址:https://www.cnblogs.com/zhuzhu88/p/6675168.html
Copyright © 2011-2022 走看看