代码的第一部分:


函数a
函数A()
{
var I=0;
函数b
函数B()
{
警报(+1);
}
返回B;
}
函数c
var(a);
(c);




代码功能:



1,函数B嵌套在函数A中。

2,函数A返回函数B。

B,函数A在代码中的内部函数,在函数A外面被一个变量C引用,称为闭包的创建。有时函数B也可以使用匿名函数而不是返回,即返回(函数){ };

优势:1。在可变安全保护功能,增强封装2。在内存中保持一个变量(过多地成为一个缺点,内存)。

关闭将占用资源。当函数A被执行时,变量i不会因为函数A的结束而被破坏,因为B的执行依赖于A中的变量。

不适合场景:返回闭包的函数是一个非常大的函数。

闭包的典型框架应该是jQuery。



闭包是Javascript语言的一个主要特性。闭包的主要应用是设计私有方法和变量。

这在制作框架时更为明显。有些方法和属性只在操作逻辑过程中使用,不想在外部修改这些属性,所以我们只能设计闭包来提供方法获取。

关闭的缺点是驻留内存,这将增加内存使用量,并且容易导致内存泄漏。

总结:

优势uff1a

1。逻辑连续性,当闭包是另一个函数调用的参数时,避免与当前逻辑分开编写额外的逻辑。

2。调用上下文的本地变量是很方便的。

三.加强封装,扩展第二点,可以实现对变量的保护。

缺点:

闭包有一个非常严重的问题,那就是内存浪费问题。这种内存浪费不仅是因为它驻留在内存中,更重要的是,不正确地使用闭包会导致内存无效。


var数组{ };
函数abc(){
函数(){()
}
Array.push(食品);
返回foo;
}
对于(var i = 0;i < 10000;i + +)
{
(ABC);
}

警报(数组{ 0 } =数组{ 1 });




通过上面的测试,我们将看到一万次(ABC)从相同的逻辑地址执行关闭产生的是不一样的,也就是说它使函数对象一模一样的很多,所以有很多好处,可以使用工厂模式的功能产生的,但如果你不经意间将关闭正常的逻辑,必然会造成内存的浪费。一个新的语法可以更好的理解。


新函数();




所以,为了关闭,在我自己的习惯,我可以使用它没有任何需要。如果我不能使用它,我会试着把闭包对象的数量保持在一个小的甚至一个。

以上是本文的全部内容,希望大家能喜欢。