2014-02-14 21 views
0

我聲明瞭一個函數是這樣的:聲明功能和內存優化的JavaScript

function clearScrollViewCont(elm,indx,array){ 

      elm.removeAllChildren(); 
     $.scrollView.scrollViewCont.remove(elm); 
     elm = null;  
} 

然後我把它叫做一個foreach函數內部:

$.scrollView.scrollViewCont.getchildren().forEach(clearScrollViewCont); 

所有以前的代碼裏面的另一大函數,所以當這個大功能從內存中刪除時,它的所有內容也將被清除,但我不知道什麼可能是更快的方式來釋放內存。我習慣於將我不再需要的每個變量(甚至是寫入一個大函數中)都清空,但是現在,我想知道如何從聲明的函數中清除內存 在我以前的代碼中,聲明'clearScrollViewCont'函數以這種方式贏得了我不會讓它在以後失效。在另一邊,如果我這樣聲明它:

var clearScrollViewCont = function (elm,indx,array){ 

     elm.removeAllChildren(); 
     $.scrollView.scrollViewCont.remove(elm); 
     elm = null;  
    } 

以後我可以(通過簡單地將歸零「clearScrollViewCont」變量)空,但我不知道這是否本身需要更多的存儲空間,則第一就像現在我聲明一個變量除了函數。

每種方式真正的優點和缺點是什麼?

回答

1

在我看來,這兩種方式佔用相同數量的空間。它真的不應該不管你喜歡聲明的函數:

function clearScrollViewCont(elm,indx,array){} 

var clearScrollViewCont = function(elm,indx,array){} 

在這兩種情況下,函數對象被創建,它是由它的名字調用:clearScrollViewCont(...); 請記住,JavaScript函數也是對象:(Functions) 因此,我認爲這兩種方式佔用相同數量的空間。