关于闭包的理解
- 什么是闭包
- 是密闭的容器,用来存储数据,类似于像set、map这样的容器。
- 是一个对象,是用来存储键值对的,存放数据的格式为
key:value。
- 闭包形成的条件
- 闭包的优点
- 闭包的缺点
- 使用闭包时的注意点
闭包案例1
function fun(){
var count = 1;
return function(){
count++;
console.log(count);
}
}
var fun2 = fun();
fun2();------------>2
fun2();------------>3
闭包案例2
function fun(n,o){
console.log(o)
return {
fun:function(m){
return fun(m,n)
}
}
}
var a = fun(0)----------->undefined
a.fun(1)----------------->0
a.fun(2)----------------->0
a.fun(3)----------------->0
function fun(n,o){
var n=0,o=undefined;
console.log(o)-------->undefined
return {
fun:function(m){
var m;
return fun(m,n)
}
}
}
function fun(n,o){
var n=0,o=0;
console.log(o)-------->0
return {
fun:function(m){
var m=1,n=0;
return fun(m,n)
}
}
}
function fun(n,o){
var n=0,o=0;
console.log(o)-------->0
return {
fun:function(m){
var m=2||3,n=0;
return fun(m,n)
}
}
}
闭包案例三
function fun(n,o){
console.log(o)
return {
fun:function(m){
return fun(m,n)
}
}
}
var b = fun(0).fun(1).fun(2).fun(3);
function fun(n,o){
var n=0,o=undefined;
console.log(o)-------->undefined
return {
fun:function(m){
var m;
return fun(m,n)
}
}
}
function fun(n,o){
var n=0,o=0;
console.log(o)-------->0
return {
fun:function(m){
var m=1,n=0;
return fun(m,n)
}
}
}
function fun(n,o){
var n=1,o=1;
console.log(o)-------->1
return {
fun:function(m){
var m=2,n=1;
return fun(m,n)
}
}
}
function fun(n,o){
var n=2,o=1;
console.log(o)-------->2
return {
fun:function(m){
var m=3,n=2;
return fun(m,n)
}
}
}
闭包案例四
function fun(n,o){
console.log(o)
return {
fun:function(m){
return fun(m,n)
}
}
}
var c =fun(0).fun(1);---->undefined/0
c.fun(2);---------------->1
c.fun(3);---------------->1
function fun(n,o){
var n=1,o=0
console.log(o)-------->undefined/0
return {
fun:function(m){
var m=1,n=0
return fun(m,n)
}
}
}
function fun(n,o){
var n=2,o=1
console.log(o)-------->1
return {
fun:function(m){
var m=2,n=1
return fun(m,n)
}
}
}