当变量超出范围时JavaScript垃圾收集

JavaScript是否支持垃圾收集?

例如,如果我使用:

function sayHello (name){
    var myName = name;
    alert(myName);
}

我是否需要使用“删除”删除myName变量或者我只是忽略它?


忽略它 - 在sayHello函数完成之后,myName落在范围之外并被gc化。


没有。
delete用于从对象中删除属性,而不用于内存管理。


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

链接地址: http://www.djcxy.com/p/27183.html

上一篇: JavaScript garbage collection when variable goes out of scope

下一篇: javascript anonymous function garbage collection