对闭包的认识了解

39 阅读1分钟

闭包

闭包的概念:

闭包(closure)是一个函数以及其捆绑的周边环境状态(lexical environment词法环境)的引用的组合。换而言之,闭包让开发者可以从内部函数访问外部函数的作用域。在 JavaScript 中,闭包会随着函数的创建而被同时创建。

示例1:

function foo(){

var person = "JO"

function bar(){
	console.log(person)
}

}

图片.png

bar可以访问到外部的person,这种情况就属于闭包。

示例2:

计数器

var count = 0;

function  add(){
    
    count += 1;
    console.log(count);
}



add(); //1
add(); //2

但是这种情况存在一些不可控因素,上述实例中可以不通过add()改变count的值。

为此我们可以使用闭包来解决这个问题。

function  foo(){
    var count = 0;
   
   return function (){
        count += 1;
    	console.log(count);
    	}

}


add = foo(); 
add(); //1
add(); //2

这样count只能通过add()函数来改变。