0

一种随机的问题,但可能对最佳实践有用 - 在事件处理程序阶段获取输入值并将它们传递给函数与将它们放入函数中是否有任何优点或缺点?如:

$('.ep').on('click',function(event) {
   get value1
   get value2
   doSomething(value1,value2)
});

function doSomething()
    get value1
    get value2
    ...rest of function
}
4

1 回答 1

0

假设您的第二个完整示例是:

function doSomething()
    get value1
    get value2
    ...rest of function
}

$('.ep').on('click', doSomething);

那么这两者在功能上是相同的,所以性能是一样的。首先,您要定义一个匿名函数并将其作为参数传递。在第二个中,您将定义一个命名函数并将命名函数作为参数传递。在这两种情况下,都会执行相同的函数体。

但是,这个例子的性能可能会更好:

var doSomething = (function(){
    get value1
    get value2
    return function(){
        ...rest of function
    }
})();

$('.ep').on('click', doSomething);

那是因为在这个例子中我们使用了一个立即函数,并在立即函数内部定义了value1andvalue2并返回一个函数来赋值给doSomething。这意味着value1并在立即函数执行时value2分配一次,但是由于 Javascript 闭包,它们都可以在返回的函数内部访问。

这与前两个示例形成对比,前两个示例都将声明value1,并且value2每次事件触发并运行函数时。

于 2013-09-26T04:30:30.717 回答