JS闭包详解 以你之姓@ 2022-03-30 08:38 158阅读 0赞 当内部函数被保存到外部时,将会生成闭包。生成闭包后,内部函数依旧可以访问其所在的外部函数的变量。 详细解释: ![20181114164616748.png][] 函数在创建时会获得**作用域链**,是存储函数能够访问的所有执行期上下文对象的集合,即这个函数中能够访问到的东西都是沿着作用域链向上查找直到全局作用域。 当函数执行时,会创建一个称为**执行期上下文的内部对象(AO)**,执行期上下文定义了一个函数执行时的环境。 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4Mzk1NDE5_size_16_color_FFFFFF_t_70][]![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4Mzk1NDE5_size_16_color_FFFFFF_t_70 1][]![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4Mzk1NDE5_size_16_color_FFFFFF_t_70 2][] ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4Mzk1NDE5_size_16_color_FFFFFF_t_70 3][] 函数每次执行时对应的执行期上下文都是独一无二的,当函数执行完毕,函数都会失去对这个作用域链的引用,JS的垃圾回收机制是采用引用计数策略,如果一块内存不再被引用了那么这块内存就会被释放。 但是,当闭包存在时,即内部函数保留了对外部变量的引用时,这个作用域链就不会被销毁,此时内部函数依旧可以访问其所在的外部函数的变量,这就是闭包。 [20181114164616748.png]: /images/20220330/4fc1fbdc15ed4d43bc1cde242959e8a1.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4Mzk1NDE5_size_16_color_FFFFFF_t_70]: https://img-blog.csdnimg.cn/20181114164801769.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4Mzk1NDE5,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4Mzk1NDE5_size_16_color_FFFFFF_t_70 1]: https://img-blog.csdnimg.cn/20181114164550734.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4Mzk1NDE5,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4Mzk1NDE5_size_16_color_FFFFFF_t_70 2]: /images/20220330/5306e911ced242f5af4e2ce47c055ffc.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4Mzk1NDE5_size_16_color_FFFFFF_t_70 3]: /images/20220330/62b58a4cdc0c43f199fd93d7b9c61425.png
相关 js闭包 所谓闭包,就是变量 从外部开始,到达父函数体,然后再从父函数体内的函数(子函数) 返回到父函数体,简单一句话概括:函数外部调用函数内部的变量。 通过下面的代码给出结果,解释一 朱雀/ 2022年08月13日 14:00/ 0 赞/ 241 阅读
相关 JS——闭包 //在函数外部读取函数内部的变量 function c(){ var a=1000; function x(){ 以你之姓@/ 2022年06月04日 09:48/ 0 赞/ 265 阅读
相关 JS闭包 JS闭包 写在闭包之前: 上下文(context) 是一段程序运行所需要的最小数据集合。我们可以从上下文交换(context switch)来理解上下文,在多进程或多线 一时失言乱红尘/ 2022年05月25日 02:05/ 0 赞/ 294 阅读
相关 JS闭包详解 一.函数和作用域 自定义函数 XXX() function XXX( ) { } // 调用函数,放在哪个位置都可以 // 如果 末蓝、/ 2022年05月13日 12:04/ 0 赞/ 148 阅读
相关 JS闭包详解 当内部函数被保存到外部时,将会生成闭包。生成闭包后,内部函数依旧可以访问其所在的外部函数的变量。 详细解释: ![20181114164616748.png][] 以你之姓@/ 2022年03月30日 08:38/ 0 赞/ 159 阅读
相关 js闭包 闭包指的是:能够访问另一个函数作用域的变量的函数。 清晰的讲:闭包就是一个函数,这个函数能够访问其他函数的作用域中的变量。 闭包就是将函数内部和函数外部连接起来的一座桥 偏执的太偏执、/ 2022年03月09日 01:36/ 0 赞/ 368 阅读
相关 js--闭包 前言 前一篇博客是介绍的作用域与作用域链,已经开始了JavaScript高级部分的学习,那么这篇博客简单的介绍一下js的闭包。 内容 所谓闭包就是函数 函数作 本是古典 何须时尚/ 2021年09月27日 04:24/ 0 赞/ 487 阅读
相关 js 闭包 闭包 > 闭包就是能够读取其他函数内部变量的函数。闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。 ![6587 ╰半夏微凉°/ 2021年09月10日 07:52/ 0 赞/ 468 阅读
相关 js 闭包 <html> <head> <title>闭包</title> <meta charset="utf-8"> 梦里梦外;/ 2021年08月28日 01:13/ 0 赞/ 474 阅读
相关 js闭包 Js语言在函数内部可以直接读取全局变量,但函数外部无法读取函数内的局部变量 <script type="text/javascript"> var n=100 朱雀/ 2021年06月24日 16:00/ 0 赞/ 498 阅读
还没有评论,来说两句吧...