闭包为返回一个函数的函数。
由于作用域的问题,无法在外部访问函数内部的变量,但有时候我们又有这样的需求,所以这时候就需要使用闭包了。
闭包就是在函数A中定义了一个函数a,然后子函数a控制夫函数变量v1,然后在父函数A中把子函数a返回给调用方。
基本用法:
var arr = [];
for(var i=0;i<10;i++){
arr[i] = (function(j){
return function(){
return j;
};
})(i);
}
--> 0-9
在外部改变函数内部的值
function Fn(){
var n =100;
function setfn(v){
n = v;
};
function getet(){
console.log(n);
};
return {
set: setfn,
get: getet
};
}
var fn = new Fn();
fn.get();
--> 100
fn.set(50);
fn.get();
--> 50
function Fn(){
var n = 100;
return function fn(v){
n = (v == undefined)?n:v;
return n;
};
}
var fn = new Fn();
fn();
--> 100
fn(50);
--> 50
fn();
--> 50