JavaScript for循环性能-在函数中更好

JavaScript for loop performance - better inside a function?

本文关键字:函数 更好 性能 for 循环 循环性 JavaScript      更新时间:2023-09-26

场景一:

console.time("loop");
for (var i = 0; i < 1000000; i += 1){
  // Do nothing
}
console.timeEnd("loop");

在Chrome的控制台中运行,这将返回apx 450ms左右。

场景2:

function test() {
  console.time("loop");
  for (var i = 0; i < 1000000; i += 1){
    // Do nothing
  }
  console.timeEnd("loop");
}
test();

Run 这个代码是Chrome的控制台,它通常是<1毫秒。我从一篇关于Node面试问题的文章中获得了这个函数示例。我理解函数外部的循环将使i解析为窗口对象,而内部的相同循环局部作用于i -因此性能提高。

我的问题是,在可能的情况下将循环放入函数中是好的做法吗?这种性能提升是诱人的,但是在函数中总是有循环似乎很奇怪,因为我没有见过这样的代码

答案是,将所有代码放入函数中是一种良好的实践。您应该在全局作用域中编写很少的代码。

正如您所指出的那样,这样做可能会带来性能提升,但这样做的原因是它可以阻止您在窗口上放置可能导致与其他库名称冲突的属性。

所以,是的,这是一个很好的实践,但不仅仅是这个原因。

http://markdalgleish.com/2011/03/self-executing-anonymous-functions/

http://esbueno.noahstokes.com/post/77292606977/self-executing-anonymous-functions-or-how-to-write

javascript中自执行函数的目的是什么?