参考
闭包
变量作用域
限定变量的使用范围,就像是对于一个SAP的产品不同的角色有不同的使用权限;
全局变量
不受作用域范围的影响,可在作用域外访问,也可以在作用域内访问;
局部变量
只能在特定的作用域范围内访问(函数内部);
Note:在作用域(函数内)中声明局部变量要使用关键字var,反之该变量是全局变量;
闭包的定义
外部函数访问一个函数内部变量的函数(局部变量能在它的作用域之外被访问),例如SAP中的RFC(remote function call)外部系统访问SAP内部数据的过程;--在一个函数内部封装一个子函数来存储局部变量,并返回该函数,一遍能在外部访问局部变量;
JavaScript链式作用域
子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之则不成立。(引自阮一峰)
闭包实现的机理
基于链式作用域的概念,将某个局部变量存储在一个内部函数(可以访问父层函数中的局部变量)中,并将该函数作为函数的返回只值;即可实现 从外部读取内部变量;
闭包的作用
实现局部变量的跨域(从变量作用域之外来访问该局部变量);
缓存局部变量;