0

我有以下JS:

var z = function(){
return "string";
}

var x = function(){
      var y = new z();
      var div = document.createElement('div');
      div.innerHTML = y;
      document.body.appendChild(div);
      /*
            my code…hundreds of other functions. Entire app is js all data comes through sockets and elements created using JS
     */
}

我有几个问题可能听起来很愚蠢,但我希望不会。

所以在'x'里面是'y'和'div'。现在,如果仅使用这两个元素,它们是否仍然“存在”在浏览器的 JS 中,还是消失了?
基本上我需要将它们设置为 null 以避免任何额外的内存被用于无用的项目。

此外,我使用 JS 编写了 25k 行,所有元素都是使用 JS 创建的。该应用程序会持续运行大约 9 个小时,直到他们关闭它,并在另一天重新开始。
但是在那几个小时里,我担心它会因为它的大小而变慢。这可能是真的吗?

4

1 回答 1

0

就您的应用程序内存使用而言,每次x()调用它都会创建一个局部变量的临时实例y。一旦函数运行完成,这将被丢弃。 X是一个匿名函数,赋予它一个新的作用域。新变量将在此范围内,也this将成为函数对象,您可以使用window.

各种浏览器处理这种情况的方式会有所不同,但结果几乎相同。
浏览器一直在优化,以使它们在处理内存方面更高效,也更快。他们也在优化范围链查找成本,这应该会提高性能。

由于您的匿名函数的性质,x()有时浏览器运行其“垃圾收集”可能会减慢或停止脚本执行,但之后它应该可以正常运行。
现代浏览器中的 Javascript 引擎可以处理令人难以置信的处理,因为许多库(例如 jquery)需要大量处理。

我不会太担心 Javascript 引擎和你的 25k 行,这更多取决于你的代码本身和它在做什么。

于 2013-02-06T11:12:06.620 回答