Javascript 最好在事件处理程序或函数中获取变量值?

Javascript 最好在事件处理程序或函数中获取变量值?,javascript,function,event-handling,Javascript,Function,Event Handling,这是一个随机的问题,但可能对最佳实践很有用-在事件处理程序阶段获取输入值并将其传递给函数与在函数内部获取相比,有什么优点或缺点?例如: $('.ep').on('click',function(event) { get value1 get value2 doSomething(value1,value2) }); 相对于 function doSomething() get value1 get value2 ...rest of function

这是一个随机的问题,但可能对最佳实践很有用-在事件处理程序阶段获取输入值并将其传递给函数与在函数内部获取相比,有什么优点或缺点?例如:

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

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

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

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
value2
,并返回一个要分配给
doSomething
的函数。这意味着当立即函数执行时,
value1
value2
分配一次,但由于Javascript关闭,它们都可以在返回的函数内部访问


这与前两个示例相反,前两个示例每次事件触发并运行函数时都会声明
value1
value2

我认为这个问题没有明确的答案。这完全取决于
doSomething
在单击处理程序中执行的操作以及其他操作。即使这样,也没有什么区别。只需在代码流中做最有意义的事情。