jsClosure闭包是指一个函数可以访问另一个函数范围内的变量。创建闭包的常用方法是在一个函数内部创建另一个函数,通过另一个函数访问该函数的局部变量。要理解闭包,首先要理解Javascript特殊的变量作用域。变量有两种作用域:全局变量和局部变量。Javascript语言的特殊之处在于可以在函数内部直接读取全局变量。由于各种原因,我们有时需要获取函数内部的局部变量。但是,正如我之前所说,在正常情况下,这是做不到的,只能通过一种变通方法来实现,那就是闭包。functionbox(){varuser='Lee';returnfunction(){//通过匿名函数返回box()局部变量returnuser;};}警报(盒子()());//通过box()()直接调用匿名函数返回值varb=box();警报(b());闭包是一个函数,它可以访问另一个函数范围内的变量。创建闭包的常见方式是在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量。.使用闭包的优点之一也是它的缺点:局部变量可以驻留在内存中,而可以避免使用全局变量。(全局变量污染导致应用的不可预测性,每个模块都可以调用必然导致灾难,所以推荐使用私有的、封装好的局部变量)js闭包---varvslet有个比较有意思的地方是AES6引入letcongst后造成的大屠杀。^_^这场屠杀需要特别注意。让我们看看下面的两个代码。唯一不同的是for循环中i变量的关键字前者是var,后者是let。两者都使用了闭包函数box(){vararr=[];的概念for(leti=0;i<5;i++){arr[i]=function(){返回i;};}返回arr;}让b=盒子();//获取函数数组for(leti=0;i
