javascript中for循环的计数器

Posted

技术标签:

【中文标题】javascript中for循环的计数器【英文标题】:the counter of for of loop in javascript 【发布时间】:2020-05-31 14:24:48 【问题描述】:

我正在学习 javascript,并学习 for 循环。我确定这是基本部分,但我不知道 counter 变量是如何工作的..

我正在制作战斗应用程序,这是用户点击战斗日志时执行的功能,然后它将在console.log中显示最后的日志及其索引。

函数中的战斗日志是存储用户输入嵌套数组的数组。

let lastLoggedEntry;


function printLogHandler() 

  let i = 0;

  for (const logEntry of battleLog) 
    if ((!lastLoggedEntry && lastLoggedEntry !== 0) || lastLoggedEntry < i) 
      console.log(`#$i`);
      for (const key in logEntry) 
        console.log(`$key => $logEntry[key]`);
      
      lastLoggedEntry = i;
      break;
    

    i++;
  

我的问题是初始值设置在 for 循环之外(i = 0)。但是当用户再次点击战斗日志,再次执行该函数时,for循环如何保存last i的数据和logEntry的值? (用户第二次点击时,i = 1,logEntry = 0)

另外,它如何从第二次跳过“让 i = 0”?因为它不仅是for循环,它还执行函数,我认为javascript再次读取let i = 0,它会重置为0。(当然不会,但我想了解原因)

希望你们能帮帮我。谢谢你,

【问题讨论】:

您的代码将i 保存在一个全局变量中,下次调用该函数时会检查该变量。 嗨,是的,我首先了解 i 是全局范围。第一次时,全局范围的变量将分配给本地范围内的 i 。我明白了,但是为什么从第二次执行函数时,全局范围没有分配给本地范围一,并且本地范围可以保留上次的变量? 【参考方案1】:

一些事情:

    提供的示例中缺少闭合。应该有另一个右括号供代码验证。 lastLoggedEntry 在使用前必须定义为变量。 不清楚battleLog的内容是什么。

我认为,如果您澄清这些事情,可能会更容易回答您的问题。

【讨论】:

您好,感谢您告诉我。我修改了我的问题,希望它能让你更容易理解。谢谢你的帮助:)

以上是关于javascript中for循环的计数器的主要内容,如果未能解决你的问题,请参考以下文章

5 Javascript:循环-for

在 for 循环中递增 JavaScript 对象中的值

有没有办法在 Java for-each 循环中访问迭代计数器?

for in循环介绍以及陷阱

Javascript等待Promise在返回响应之前完成for循环

小白教程—最详细Java循环结构解析之for循环