跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

JavaScript 闭包在封装函数时的简单分析_javascript技巧

wbkt2t最近发现了一个新名词:闭包。(自己落后了,要好好学习才行),baidu、google看了一下原理和实例,也明白了闭包的强大。JQuery也把闭包发扬光大了,网上一些个人开发的框架都是用了闭包了功能。知道了闭包的原理和使用发放,于是自己小小试验了一把,带着疑惑:使用闭包有什么好处?不使用会出现什么后果?写下了以下代码,也希望大家给小弟一些解答

使用闭包:

实例1使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Andr​​oid友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Andr​​oid应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更下载复制代码代码如下:var $Darren;(function(){var Obj={version:"1.0",author:"Darren"};Obj.Add=function(arg1,arg2){return (arg1+arg2);}Obj.Multi=function(arg1,arg2){return (arg1*arg2);}$Darren=Obj;})(); //匿名函数,并使其马上执行alert($Darren.Add(6,2)); //结果 8 alert($Darren.Multi(3,5)); //结果15

不使用闭包代码:

实例2复制代码代码如下:var $Darren2={version:"1.0",author:"Darren"};$Darren2.Add=function(arg1,arg2){return (arg1+arg2);}$Darren2.Multi=function(arg1,arg2){return (arg1*arg2);}alert($Darren2.Add(6,2)); //结果 8 alert($Darren2.Multi(3,5)); //结果15

我的理解是:

.使用闭包后可以防止命名冲突,如在实例1中,如果$Darren变量冲突只需改两处地方,而在实例2中,如果$Darren2变量冲突则需该多处(这里是3处)

.使用闭包后,即使匿名函数执行完毕,但是还可以使用其内部的函数。

还有我有个疑惑就是:

为什么大家都推荐实例1的写法,实例1和实例2哪个更好,为什么?一样能实现的功能。

希望大家指点小弟,这样理解对不对?

还有什么补充的。

谢谢大家~~~

相关文章