JavaScript学习之闭包

参考

阮一峰

廖雪峰

闭包

变量作用域

限定变量的使用范围,就像是对于一个SAP的产品不同的角色有不同的使用权限;

全局变量

不受作用域范围的影响,可在作用域外访问,也可以在作用域内访问;


图1

局部变量

只能在特定的作用域范围内访问(函数内部);


图2

Note:在作用域(函数内)中声明局部变量要使用关键字var,反之该变量是全局变量;


图3

闭包的定义

外部函数访问一个函数内部变量的函数(局部变量能在它的作用域之外被访问),例如SAP中的RFC(remote function call)外部系统访问SAP内部数据的过程;--在一个函数内部封装一个子函数来存储局部变量,并返回该函数,一遍能在外部访问局部变量;

JavaScript链式作用域

子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之则不成立。(引自阮一峰

闭包实现的机理

基于链式作用域的概念,将某个局部变量存储在一个内部函数(可以访问父层函数中的局部变量)中,并将该函数作为函数的返回只值;即可实现 从外部读取内部变量;


图4


闭包的作用

实现局部变量的跨域(从变量作用域之外来访问该局部变量);

缓存局部变量;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容