zoukankan      html  css  js  c++  java
  • js闭包问题

    作用域

    js的作用域主要分为:全局作用域和局部作用域

    作用域链

    作用域链是保证对执行环境有权访问的所有变量和函数的有序访问,

    函数作用域(局部作用域)中访问变量是通过,访问函数作用域内部变量,访问父级作用域变量,访问全局作用域变量的顺序访问,

    这就导致外层父级作用域无法访问子级作用域的变量;

    闭包定义:

    函数嵌套时内层函数引用了外层函数作用域下的变量,并且外层函数在全局环境下可访问,就形成了闭包

    闭包原理,函数内部的子函数才能读取局部变量

    在正常情况下外界时无法访问函数内部的变量的,函数执行完后,上下文即被销毁。

    但是在外层函数中,若我们返回了另一个函数,且这个返回函数使用了外层函数的变量,外界因而便能够通过这个返回的函数获取原外层函数内部的变量;

    闭包问题

    1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

    2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

  • 相关阅读:
    图论——拓扑排序
    BZOJ 2882 & 后缀数组的傻逼实现
    BZOJ 2626 & KDtree
    Colorado Potato Beetle(CF的某道) & 鬼畜宽搜
    Prime & 反素数plus
    BZOJ 2049 & LCT又一模板
    BZOJ2002 & LCT模板(分块不会搞)
    BZOJ2190 & 欧拉函数
    BZOJ 1053 & 反素数
    POJ2774 & 后缀数组模板题
  • 原文地址:https://www.cnblogs.com/lizhiwei8/p/11650932.html
Copyright © 2011-2022 走看看