[学习笔记]JS中闭包的理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[学习笔记]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中闭包的理解的主要内容,如果未能解决你的问题,请参考以下文章

JS闭包

JS---闭包

JavaScript学习笔记——闭包

关于闭包的理解(JS学习小结)

js学习笔记01-函数,作用域,闭包

笔记:学习Javascript闭包(Closure)