JS提示错误:已经定义了for循环局部变量

时间:2014-08-24 21:38:01

标签: javascript compiler-errors jshint

我正在2D阵列上进行多次传递操作。基本上是这样的:

function heightMap() {
  var seedList = [],
      tileList = [];
  //forloop filling tileList

  while(seedList.length<20) {
      var tile = tileList[randomX][randomY];
      //do stuff to tile
      seedList.push(tile);
  }
  for(var x in tileList) {
    for(var y in tileList {
      var tile = tileList[x][y];
      //do stuff to tile
    }
  }
}

JS-Hint说tile已在for循环下定义。什么?是对的吗?这与我对范围的理解不符。 IDK如果值得注意,但一切都运行良好。

2 个答案:

答案 0 :(得分:2)

JavaScript只有函数范围。这两个循环都在同一个函数中,因此它们在同一范围内,因此for循环中的tile与while循环中的{{1}}相同。

答案 1 :(得分:1)

如果您可以使用ES6 let语句代替 var ,则可以使用块范围定义变量。例如,Node.js版本4及更高版本支持使用let语句。