>创建闭包的必要条件:
1.函数嵌套
2.内部函数引用外部函数的变量
3.将内部函数作为返回值返回
>闭包是什么?
就是可以访问外部函数(作用域)中变量的内部函数
> 闭包是什么时候产生的?
- 当调用外部函数时,闭包就已经创建了
- 外部函数每调用一次就会产生一个闭包,
闭包和闭包之间是相互独立的
>闭包是怎么消失的?
- 直到内部函数被GC(垃圾回收)后才消失
function outer() {
var n = 0;
function inner() {
n++;
console.log('inner ->',n);
}
function inner2() {
n++;
console.log('inner2 ->',n)
}
// 将内部函数存储到一个对象中返回
return {inner:inner,inner2:inner2};
}
var obj = outer();
var obj2 = outer();
console.log(obj); // 打印的是 {inner: ƒ inner(), inner2: ƒ inner2()}
obj.inner();// 初次n++ 打印的是1
obj.inner2();// 二次n++ 因为改变的是同一个变量 打印的是2
// obj2是单独的函数调用,所以产生的闭包和obj之间是独立
obj2.inner();// 初次n++ 打印的还是1
obj2.inner2();// 二次n++ 因为改变的和obj2.inner()改变的是同一个变量 打印的是2
console.log('outer',outer); // 打印的是 'outer',f outer(){}...
var out

本文详细阐述了闭包的概念、产生条件、消失机制以及在实际项目中的应用。重点讲解了闭包如何影响函数间的独立性,并强调其在前端开发中的重要性。
最低0.47元/天 解锁文章
49

被折叠的 条评论
为什么被折叠?



