首页 > 代码库 > [学习笔记]JS中闭包的理解
[学习笔记]JS中闭包的理解
一、闭包概念的理解
闭包,又称为词法闭包或函数闭包指引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。
自由变量:该变量既不是函数本身定义的也不是函数参数中的变量。
1 function f1() { 2 var count = 99; 3 function f2() { 4 alert(count);//count对于f2来说是自由变量,这里函数f2引用了自由变量count 5 } 6 return f2; 7 }
这个被引用的自由变量将和这个函数一同存在,即使已经离开了创建它的环境也不例外。
1 function f1(free) { 2 return function(arg) { 3 return free + arg; 4 } 5 } 6 var freeAdd = f1(10);//自由变量(值10)和函数一同存在 7 var freeAdd2 = f1(20);//自由变量(值20)和函数一同存在 8 alert(freeAdd(5));//10+5 9 alert(freeAdd2(5));//20+5
调用的函数会沿着作用域链一级一级向上寻找自由变量,绑定的函数可以改变自由变量,自由变量不会消失,直到对它的引用消失。
二、闭包的应用
由于闭包的特性,能够保持自由变量,因此可以使用闭包来存储动态数据,并且隐藏封装起来。
[学习笔记]JS中闭包的理解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。