我想知道在创建元素但未附加到某些内容时浏览器内存会发生什么。例如:
以下情况:
var text = $('<div/>').html('<b>hello</b>').text();
div元素会发生什么?如果有的话,它对内存的影响是什么?
答案 0 :(得分:2)
这个(子)表达式创建的元素(jQuery
对象,确切地说)......
$('<div/>').html('<b>hello</b>')
整行执行后, ...将不再被任何东西引用。因此,从技术上讲,它将被视为discarded
- 在实践中,它仍将驻留在内存中,为垃圾收集器做好准备,以便在小型野兽入侵时收获。
这种情况有点类似于在基元上调用方法时发生的情况,如:
'abc'.toUpperCase();
此处'abc'
将首先转换为String
对象,然后将调用此对象的toUpperCase
方法(整个表达式将计算此调用的结果)。关键是,这个String
对象将在评估后立即被丢弃。