函数中for循环索引的Javascript范围

时间:2017-09-08 05:15:31

标签: javascript for-loop scope

我在Javascript中有类似于以下代码:

// Page1.vue
<template>
  <div>
    <h1>Page 1</h1>
  </div>
</template>

<style scoped>
  // with the `scoped` attribute, these rules will only apply to this component
  h1 {
    color: red;
  }
</style>

显然我的这个程序的输出是一行带有2,但是如果我将其中一个for循环的索引名称从i更改为ii,那么它会起作用。

在javascript中预期的行为是func1中for循环中的i在第一次调用func2后实际上变为100吗?

如果这是真的,有没有办法解决这个问题,而不是以不同的方式命名每个索引?当嵌套了很多函数调用时,这非常烦人。

1 个答案:

答案 0 :(得分:2)

你需要这样做,

func1() {
    for(var i = 2; i < 5; i ++) { // define i here
      console.log(i);
      func2(i);
    }
}

func2(x) {
    for(var i = 100; i < 200; i ++) { // define i here
      do something
    }
}

如果你声明为全局,那么它将具有最近的值,因此你需要为每个函数提供唯一的值,你应该在函数中声明