没有引用的非附加元素

时间:2014-04-01 13:23:38

标签: jquery memory

我想知道在创建元素但未附加到某些内容时浏览器内存会发生什么。例如:

以下情况:

var text = $('<div/>').html('<b>hello</b>').text();

div元素会发生什么?如果有的话,它对内存的影响是什么?

1 个答案:

答案 0 :(得分:2)

这个(子)表达式创建的元素(jQuery对象,确切地说)......

$('<div/>').html('<b>hello</b>')
整行执行后,

...将不再被任何东西引用。因此,从技术上讲,它将被视为discarded - 在实践中,它仍将驻留在内存中,为垃圾收集器做好准备,以便在小型野兽入侵时收获。

这种情况有点类似于在基元上调用方法时发生的情况,如:

'abc'.toUpperCase();

此处'abc'将首先转换为String对象,然后将调用此对象的toUpperCase方法(整个表达式将计算此调用的结果)。关键是,这个String对象将在评估后立即被丢弃。