zoukankan      html  css  js  c++  java
  • JS-06 (作用域链和闭包)

    1 作用域

    作用域是一个变量的可用范围。

    JS包括两级作用域:全局作用域(window)和函数作用域。

    这里需要知道另一个知识点:函数的生命周期

      ①定义函数时

      ②调用函数时

      ③函数调用后

    2 作用域链 多级作用域串联形成的链式结构,控制着一个函数可用的所有变量:先局部,局部没有再从全局找

    注意:js中没有块级作用域,for等分支循环内声明 的变量出了循环还是能用

    3 闭包

    作用:重用一个变量,又保护变量不被篡改的一种编程方法

    本质:外层函数的函数作用域对象因为被内层函数引用这无法释放就成了闭包

    如何做:

    (1)外层函数包裹要保护的变量和内层函数对象;

    (2)外层函数返回内层函数对象到外部

    (3)使用者必须调用外层函数才能获得返回的内层函数并用变量接住

    闭包形成的原因: 外层函数调用后外层函数的作用域对象无法释放形成了闭包

    闭包的缺点:(1)比全局函数多占用一块内存空间;(2)容易造成内存泄漏

    如何减少闭包缺点带来的影响:闭包不再使用时,要主动释放,fn=null;

  • 相关阅读:
    学生宿舍水电管理系统 产品需求评审(用户故事)
    nyoj 14-会场安排问题 (贪心)
    好看的鼠标hover效果
    JavaScript-三种弹窗方式
    博客园美化夜间模式
    js写个小时钟
    js获取时间,循环执行任务,延迟执行任务
    Bzoj1103 [POI2007]大都市meg
    POJ2155 Matrix
    POJ3625 Building Roads
  • 原文地址:https://www.cnblogs.com/codexlx/p/12482923.html
Copyright © 2011-2022 走看看