2013-09-26 51 views
0

一種隨機問題,但可能對最佳實踐有用 - 在事件處理程序階段獲取輸入值並將它們傳遞給函數與將函數傳入函數中有什麼優缺點嗎?如:更好地獲取事件處理程序或函數中的變量值?

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

而非

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

我不認爲這個問題有一個確定的答案。這一切都取決於doSomething的功能,以及點擊處理程序中的其他功能。即使如此,它幾乎沒有什麼區別。只要做一些最有意義的代碼流。 –

回答

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); 

這是因爲在這個例子中,我們使用一個直接功能,定義value1value2立即函數中,並返回一個函數分配給doSomething 。這意味着value1value2被賦值爲一次當immediate函數執行時,但是由於Javascript關閉,它們都可以在返回的函數內部訪問。

這與前兩個例子相反,每當事件觸發並運行該函數時,它們都會聲明value1value2

相關問題