【发布时间】:2011-08-08 04:57:26
【问题描述】:
在最近的一次采访中,有人问我,“在引用 DOM 元素时使用闭包有什么危险,就像这段代码一样?”
var firstNameValue = (function(elementId) {
var firstName = document.getElementById(elementId);
return firstName.value;
})("firstName");
显然,我不知道,上面的代码在 IE 中造成了内存泄漏。给定的理由很模糊,我不明白,但显然这可能只适用于较旧的 IE 版本?
谁能详细说明一下?
【问题讨论】:
-
提问者要么很笨,要么很聪明。愚蠢,因为没有关闭或内存泄漏,整个事情相当于:
var firstNameValue = document.getElementById('firtName').value;。或者非常聪明,因为提到关闭和内存泄漏会分散真正问题的注意力 - 代码不必要的复杂性。 -
据报道,“内存泄漏问题”在 IE8 中已修复。但是,正如@RobG 在他的回答中所说,我看不出这可能如何导致旧浏览器中的内存泄漏。下面的 MSDN 页面列出了一系列在 IE7 和更早版本中会导致内存泄漏的测试用例 - 我没有看到包含这种模式。 msdn.microsoft.com/en-us/library/dd361842(VS.85).aspx
标签: javascript internet-explorer dom