Closures are functions that refer to independent (free) variables. In other words, the function defined in the closure 'remembers' the environment in which it was created.
闭包是指函数有自由独立的变量。换句话说,定义在闭包中的函数可以“记忆”它创建时候的环境。

闭包是一种特殊的对象,它由两部分构成:函数,以及创建该函数的环境。环境由闭包创建时在作用域中的任何局部变量组成。

1.变量作用域

我们知道,JS中有变量的作用域,包括全局变量和局部变量,全局变量在全局作用域中可以直接访问,而局部变量只在局部作用域中才能访问

全局变量

var n = 1 ;
(function(){
    console.log(n); //1
})()

局部变量

var x = 1;
(function(){
    var y = 2;
})()

console.log(x); //1
console.log(y); // ReferenceError: n is not defined 

函数内部可以访问全局变量,在函数外部无法访问函数内部的局部变量

闭包提供的功能就是 让我们可以在全局作用域下去操作局部变量

Read More »