欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js中的闭包

程序员文章站 2022-06-09 20:06:32
...

**

1.什么是闭包

**
闭包就是能够读取其他函数内部变量的函数。在JS中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解为”定义在一个函数内部的函数”。
function fn() {
var b = 1;

 //闭包
 function box() {
      //
      console.log(b);
 }

 //返回一个函数,这个函数就是一个闭包
 return box;

}

//res 就是 box 函数
var res = fn();

//2秒以后调用res函数,还是能打印b的值,闭包能让局部变量常驻内存
setTimeout(function() {
res();

}, 2000);

2.闭包的特点
1:可以读取函数内部的变量。
变量的作用域无非就是两种:全局变量和局部变量。
JS语言的特殊之处,就在于函数内部可以直接读取全局变量。另一方面,函数外部自然无法读取函数内的局部变量
2:让这些变量的值始终保存在内存中。
闭包的应用场景
1:函数作为返回值。

function box() {

 var n = 1; //
 function cox() {
      n++;
      return n;
 }

 return cox;

}
//res 就是一个闭包 ,n像是一个全局变量
var res = box();

console.log(res()); //2
console.log(res()); //3

2:函数作为参数被传递
回调函数

相关标签: 原生js