2010-10-23 69 views
0

這對我來說似乎相當明顯,但我只是想確認一下。在使用內存方面的foo功能的收納時,將能夠更好地做到這一點:JavaScript函數的內存大小

function foo(){ 
    var hey = {}; 
    hey.a = 1; 
    hey.b = 1; 
    alert('done'); 
} 

function foo(){ 
    var hey = getHey(); 
    alert('done'); 
} 
function getHey(){ 
    var hey = {}; 
    hey.a = 1; 
    hey.b = 1; 
    return hey; 
} 

由於getHey()只是將是實際函數的引用,我m不知道它是按原樣存儲foo還是嵌入getHey

回答

0

邏輯上,函數將在父範圍內存儲時存儲在內存中。並且該引用確實佔用了一些內存,但真正的危險通常是在循環中調用函數時的開銷,只是在一個大的for循環中調用一個函數會增加很多處理時間。

+0

因此,如果我在哈希中存儲了幾千個'foo'實例,哈希將佔用相同數量的內存兩種情況? – Azmisov 2010-10-23 16:07:41

+0

程序本身在內存中可能會略大,但聲明的變量應該是相同的。通常這不是問題,雖然如上所述,讀取該函數所需的時間(調用開銷)將達到巨大的性能。失利。 – tutuDajuju 2010-10-25 04:53:53

0

它們是獨立的功能。但是,什麼可能節省一些空間是:

function foo() { 
    var hey = { a: 1, b: 1 }; 
}