[英]Javascript memory management in functions
示例代碼如下;
function a() { var a = 123; //some stuff b(); } function b() { //some stuff } a();
所以我的問題是在執行b()時變量'a'是否在內存中?
謝謝。
是的。 它不在b()
的范圍內,但它在內存中。
你不能只是神奇地刪除a()
范圍的對象。 你可以手動 delete a;
如果您不再需要它,但最好和最合理的方法是通過一個接一個地調用它們而不是嵌套調用:
function a() {
var a = 123;
//some stuff
}
function b() {
//some stuff
}
a();
b();
如果沒有快速的方法,請考慮重構您的代碼
這將是特定於實現的,並且是特定於程序的。 它將取決於它運行的確切javascript平台,諸如系統內存大小,以及在運行a()
之前分配了多少代碼/多少變量。
你不能依賴它在b()
之前或期間被釋放,因為垃圾收集是非確定性的。
在大多數情況下,它可能會留在記憶中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.