假设您的第二个完整示例是:
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);
那是因为在这个例子中我们使用了一个立即函数,并在立即函数内部定义了value1
andvalue2
并返回一个函数来赋值给doSomething
。这意味着value1
并在立即函数执行时value2
分配一次,但是由于 Javascript 闭包,它们都可以在返回的函数内部访问。
这与前两个示例形成对比,前两个示例都将声明value1
,并且value2
每次事件触发并运行函数时。