JavaScript学习笔记

JavaScript学习之闭包

2017-02-21  本文已影响1人  小人物的秘密花园

参考

阮一峰

廖雪峰

闭包

变量作用域

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

全局变量

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

图1

局部变量

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

图2

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


图3

闭包的定义

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

JavaScript链式作用域

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

闭包实现的机理

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

图4

闭包的作用

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

缓存局部变量;

上一篇 下一篇

猜你喜欢

热点阅读