javascript中匿名方法的优点和缺点是什么?

时间:2012-02-03 04:59:23

标签: javascript

在javascript中有很多不同的方法来设置某个方法,例如按钮点击事件。

例如,

表示您已经检索了输入元素“按钮”

function MyForm(){
   //anonymous method
   button.click = function(){ //work };


   //private method
   var handleClick = function () { // work };
   button.click = handleClick;

   //public method
   button.click = outerClickHandle;


}

//public
function outerClickHandle(){
    // work
}

//prototype
MyForm.prototype.outerClickProto(){
   //work
}

当然有一些更明显的答案,例如需要时的封装。使用原型,您不必每次都重新创建该功能,这对于性能有利,但对于匿名方法,除了是一种很好的方式,或者编写脚本的流程,有什么好处和坏处?

1 个答案:

答案 0 :(得分:2)

我发现的主要优点是,因为它是内联声明的,所以匿名函数可以访问范围内的所有当前局部变量,这在某些情况下可以极大地简化代码。一个典型的例子是setTimeout(),您希望它使用上面范围中定义的变量进行操作。

当然,匿名函数也不会干扰您所处的任何命名空间(全局,函数中的本地等等),因为它不需要名称。

使用带有addEventListener(type,fn)事件处理程序的匿名函数的一个缺点是,您无法仅删除该事件侦听器,因为您没有该函数的句柄。

匿名函数的另一个缺点是每次使用它的代码运行时都会创建一个新函数,这在某些情况下完全没有区别,但在其他情况下可能需要考虑性能原因(例如,如果在循环中做事)