2011-08-24 18 views
0

說我有這樣的功能:創造條件在JavaScript中倒閉的

function wrap_function(fnInput) 
{ 
    if (somecondition) 
    { 
     return function() { 

      // Simplified example, in reality doing more stuff in here 
      fnInput.apply(this, arguments) 

     } 
    } 
    else 
    { 
     return fnInput; 
    } 
} 

我假設,如果somecondition是假的這一功能不會創建一個封閉,因此不會有性能/與閉包相關的內存影響。

這是正確的嗎?

+0

在這種情況下,閉包的「性能/內存影響」絕對最小。如果* somecondition *爲true,則調用* wrap_function *時創建的激活對象將保留在匿名函數的作用域鏈上,但可能會被優化掉,因爲沒有使用它。 * fnInput *可能是傳遞給* wrap_function *的原始(function?)對象的直接引用。在最壞的情況下,在解析匿名函數內部的標識符* fnInput *時,只有一次額外的查找。 – RobG

回答

1

如果somecondition爲false,則不會創建閉包。您在示例中使用的是javascript的鬆散類型本質

+0

謝謝...這就是我的想法,只是需要確定。 –