循环的Javascript未正确运行

循环的Javascript未正确运行,javascript,html,arrays,canvas,kineticjs,Javascript,Html,Arrays,Canvas,Kineticjs,我有一个需要执行的代码数组。这是一个使用HTML5画布的项目的一部分 我运行一个for循环来遍历这个数组,并使用eval()从数组中执行代码。该数组称为平铺,其中一部分可能如下所示: context.fillStyle="rgb(255,255,255)"; context.beginPath(); context.moveTo(256,197); context.lineTo(177,241); context.bezierCurveTo(172,237,167,232,162,228); c

我有一个需要执行的代码数组。这是一个使用HTML5画布的项目的一部分

我运行一个
for循环
来遍历这个数组,并使用
eval()
从数组中执行代码。该数组称为
平铺
,其中一部分可能如下所示:

context.fillStyle="rgb(255,255,255)";
context.beginPath();
context.moveTo(256,197);
context.lineTo(177,241);
context.bezierCurveTo(172,237,167,232,162,228);
context.fill();
现在我将for循环与普通的动能代码结合起来,遍历数组,执行代码并在画布上创建形状。例如:

var layer = new Kinetic.Layer();
for (var i=0 ;i<5; i++) {
  var tile = new Kinetic.Shape({
    sceneFunc: function(context){ eval(tiles[i]); }
  });
  layer.add(tile);
}
stage.add(layer);
关闭:

var layer = new Kinetic.Layer();
for (var i=0 ;i<5; i++) {
  (function(num) {
     var tile = new Kinetic.Shape({
       sceneFunc: function(context){ eval(tiles[num]); }
     });
     layer.add(tile);
  }(i));
}
var层=新的动能层();

for(var i=0;iand)@FelixKling谢谢你的链接。非常有用!你是说闭包是问题还是解决方案?这很有效!!为什么?我以前从来没有在for循环中这样做过。有什么原因吗?@cooper:我想你已经看过其他问题并得到了解释了吧?
var layer = new Kinetic.Layer();
for (var i=0 ;i<5; i++) {
  (function(num) {
     var tile = new Kinetic.Shape({
       sceneFunc: function(context){ eval(tiles[num]); }
     });
     layer.add(tile);
  }(i));
}