当前位置: 首页 > news >正文

详解JavaScript中的闭包

闭包(重点掌握)

JS也采用词法作用域,也就是说,函数的执行依赖于变量的作用域,这个作用域是在函数定义时决定的,而不是函数调用时决定。为了实现词法作用域,JS函数对象的内部状态不仅包含函数的代码逻辑,还必须引用当前的作用域链。函数对象可以通过作用域链相互关联起来,函数体内部的变量都可以保存在函数作用域内,这种特性在计算机科学文献中称为闭包。

所有函数都是闭包,都是对象,都关联作用域链。大多数时候,定义函数作用域在调用函数时依旧有效。但是,当定义函数作用域链和调用函数作用域链不同的时候,事情就微妙了。

理解闭包首先要了解嵌套函数的词法作用域规则:

var scope="global scope";//全局变量
function checkscope(){var scope="local scope";//局部变量function f(){ return scope; }//在作用域中返回这个值return f();
}
checkscope();//'local scope'

对以上代码做一点改动:

var scope="global scope";//全局变量
function checkscope(){var scope="local scope";//局部变量function f(){ return scope; }//在作用域中返回这个值return f;
}
checkscope()();'local scope'

未完待续。。。


http://www.mrgr.cn/news/41816.html

相关文章:

  • 从零开始搭建UVM平台(八)-加入agent
  • Spring 框架和Spring Boot
  • Dave Cheney: Go语言之禅
  • 【AI知识点】损失函数(Loss Function)
  • “衣依”服装销售平台:Spring Boot技术驱动的创新
  • JAVA的三大特性-封装、继承、多态
  • Python--解决从Hugging Face的服务器下载某个预训练模型或其相关的文件问题
  • 手机使用指南:如何在没有备份的情况下从 Android 设备恢复已删除的联系人
  • preconnect 预解析
  • Python--导入模块报错处理
  • 【数据库差异研究】update与delete使用表别名的研究
  • 快速上手 Java:给已经学会 C++ 的开发者的指南
  • 理解无监督学习、无监督图像分割
  • <<迷雾>> 第6章 加法机的诞生(1)--全加器 示例电路
  • 【运维类资料集】实施运维方案(word)
  • PostgreSQL升级:使用pg_upgrade进行大版本(16.3)升级(17.0)
  • 想学道家智慧,误打误撞被儒家引导读《道德经》?这是怎么回事?
  • SpringBoot驱动的美容院管理系统:优雅与效率的结合
  • Win10/11电脑怎么折腾都进不去Bios?看这!
  • 【解决方案】关于 UART 接收数据时丢失数据的解决办法——环形缓冲存储区