JavaScript是否支持垃圾收集?變量超出範圍時的JavaScript垃圾收集
例如,如果我使用:
function sayHello (name){
var myName = name;
alert(myName);
}
做我需要使用「刪除」刪除myName
變量或我只是忽略它?
JavaScript是否支持垃圾收集?變量超出範圍時的JavaScript垃圾收集
例如,如果我使用:
function sayHello (name){
var myName = name;
alert(myName);
}
做我需要使用「刪除」刪除myName
變量或我只是忽略它?
忽略它 - 在sayHello函數完成之後,myName落在範圍之外並被gc化。
沒有。
delete
用於從對象中刪除屬性,而不是用於內存管理。
你不需要做任何事情Ted,不需要刪除這個變量。
參見:http://www.codingforums.com/archive/index.php/t-157637.html
正如其他人提到的,當函數退出,然後你的變量超出範圍,因爲它的範圍僅僅是在函數中,所以後來GC能夠清理。
但是,該變量可能被函數外部的某個東西引用,那麼它將不會被gc'ed一段時間,因爲它仍然有一個引用它。
你可能想在JavaScript的作用域讀了起來: http://www.webdotdev.com/nvd/content/view/1340/
隨着你可以創建內存泄漏關閉,這可能是你正在試圖解決這個問題,而且是關係到我已經提到的問題: http://www.jibbering.com/faq/faq_notes/closures.html
JavaScript支持垃圾收集。在這種情況下,由於您明確聲明瞭該函數內的變量,因此它將在函數退出並在某個時間後收集時超出範圍,並且(2)不能成爲delete
(下面鏈接的每個參考)的目標, 。
凡delete
可能是有用的,如果你隱式聲明的變量,這使他們在全球範圍內:
function foo()
{
x = "foo"; /* x is in global scope */
delete x;
}
然而,這是一個不好的做法,隱式地定義變量,因此請務必使用var
,你不會必須關心delete
。
欲瞭解更多信息,請參見:https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/delete_Operator
肯定沒有,CTO:http://www.codingforums.com/archive/index.php/t-157637.html –
請重新標記/標題改成:這有什麼好做優化。我建議「JavaScript變量範圍」 – kdgregory
另請參閱有關JS GC的這個問題 - http://stackoverflow.com/questions/864516/what-is-javascript-garbage-collection – Kobi