Javascript 全局变量由每个for循环迭代重置,而不是更新

Javascript 全局变量由每个for循环迭代重置,而不是更新,javascript,Javascript,披露:我是个新手,对JS缺乏经验,但我花了几个小时试图通过Stackoverflow和其他互联网资源找到解决方案。我的导师本周不在,所以我希望这里有人能帮助我。提前谢谢你 简介:我正试图通过变量setupTotal跟踪一个运行总数。我把它放在函数getStoredData的顶部,认为它会像一个全局函数一样工作,不会在getStoredData中的for循环中被过度写入或重置。我已经包含了上下文的周围代码,并将我认为与实际问题相关的内容加粗 问题:每次for循环通过迭代循环时,我的setupTot

披露:我是个新手,对JS缺乏经验,但我花了几个小时试图通过Stackoverflow和其他互联网资源找到解决方案。我的导师本周不在,所以我希望这里有人能帮助我。提前谢谢你

简介:我正试图通过变量setupTotal跟踪一个运行总数。我把它放在函数getStoredData的顶部,认为它会像一个全局函数一样工作,不会在getStoredData中的for循环中被过度写入或重置。我已经包含了上下文的周围代码,并将我认为与实际问题相关的内容加粗

问题:每次for循环通过迭代循环时,我的setupTotal变量都会被重置。我在控制台日志和buildSetup函数末尾的setupFees.innerHTML中都看到了这一点。据我所知,当我指定var setupTotal=0时;在getStoredData函数的开头,我在buildSetup嵌套函数中进行的更新应该是重写原始值。然而,每次新的迭代运行时,setupTotal值都再次从0开始


函数getStoredData(){ //构建“服务行”div以容纳传入内容 buildDivRow(); var setupTotal=0; //在盒子中循环查看存储的内容 for(serviceDatabase中的var服务){ 对于(id=0;id根据您的代码,您可以在buildSetup函数上返回setupTotal值,然后在调用getStoredData函数后分配该值,如下所示:

function getStoredData() {
  ..
  console.log("buildSetup starting, setupTotal): " + setupTotal);
  setupTotal = buildSetup(service, getData, setupTotal);
  ..
}

function buildSetup(service, getData, setupTotal) {
  ..
  setupFees.innerHTML = setupTotal;

  return setupTotal;
}

它真的在代码的某一行上有**吗?它不会给你带来任何错误吗?@ChristianEsperar这是一个粗体效果(因为它是一个代码段,
**
不会被标记处理)<代码>设置总计不是全局的!它仅在
getStoredData
的范围内可见。如果没有您正在使用的数据(在其适当的结构中),则无法回答此问题
setupTotal
是根据
setup
计算的,而
setupTotal又是根据名为
setupDatabase
的某个对象的属性计算的。我们没有这些值。我的印象是,嵌入式函数仍然可以访问高级变量,只要它们仍然在父级函数的范围内。你能给我一个简单的解释为什么变量setupTotal没有按照我设置的方式更新吗?是的,你可以在getStoredData中访问setupTotal,因为你在同一个作用域上,但代码的问题是,每次调用getStoredData时,你总是将setupTotal分配给0。如果你把setupTotal放在你脚本的根级别,它会保留它的值,但我认为当你根据你当前的代码这样做时,仍然会出现一些计算问题。我感谢你花时间和我一起讨论这个问题。我会做更多的研究。谢谢
function getStoredData() {
  ..
  console.log("buildSetup starting, setupTotal): " + setupTotal);
  setupTotal = buildSetup(service, getData, setupTotal);
  ..
}

function buildSetup(service, getData, setupTotal) {
  ..
  setupFees.innerHTML = setupTotal;

  return setupTotal;
}