gpt4 book ai didi

javascript - 大型 FOR 循环中的新局部变量,这是一个问题吗?

转载 作者:行者123 更新时间:2023-11-29 15:02:22 25 4
gpt4 key购买 nike

在这个简单的示例函数中:

doSomething = function(withThisId) {
var videos = getVideos(), // array of videos
discovered = false
;

for(var i = 0; i < 50000; i++) {
var keepToCheck = videos[i];

if(keepToCheck.id == withThisId) {
discovered = true;
break;
}
}

return discovered;
};

我想知道是否:

  1. for 循环中,我们每次迭代时都会初始化一个名为 keepToCheck 的新变量,然后将其用于某些事情。这是否意味着每次都会创建一个新变量,因此我们有可能在内存中存在 50,000 个 keepToCheck 变量(直到 GC 清除它)?

    或者 JS 引擎是否足够聪明,知道变量可以重用而不创建重复项?

  2. 如果我们在 for 循环之外初始化 var keepToCheck 然后将其设置为 keepToCheck = videos[i]; 是否有性能优势? ?

我一直在努力研究这个,但在网上找不到任何建议。

最佳答案

在 JavaScript 中,只会创建一个变量。第一次迭代后,keepToCheck 已经存在,将被覆盖,不会重新创建。

但是,出于组织目的,我更喜欢在知道需要时立即列出所有变量。在这种情况下,我会:

var videos = getVideos(),
discovered = false,
keepToCheck, i;

后面是其余的代码。如果某些变量仅在 if 中使用,我会在该 block 中首先对它们进行var

关于javascript - 大型 FOR 循环中的新局部变量,这是一个问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8060528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com