在Angular中使用eval()动态创建变量时引用错误

时间:2015-12-22 02:17:45

标签: angularjs eval referenceerror dynamic-variables

我正在尝试根据另一个变量创建动态生成的变量,例如:

var limit = 2;
$scope.blank_item = [];
$scope.create_vars = function(limit){
  for(i=0; i<limit; i++){
    eval('var item' + i) = $scope.blank_item;
  };
};

这应该给我3个新变量,如下所示:

var item0 = [];
var item1 = [];
var item2 = [];

但是,当我尝试这样做时,收到以下错误消息:

ReferenceError: Invalid left-hand side in assignment

我的逻辑是否存在根本性的错误?

1 个答案:

答案 0 :(得分:0)

这与Angular无关。传递给eval()的值必须是一个或多个语句,而不是语句的一部分。而你当然不能将一部分语句传递给eval(),然后为其分配一个值。

即使你可以这样做,它只会创建临时变量,一旦你的函数完成执行就会消失。

抛弃eval()并使用数组:

var limit = 2;
var items = [];
$scope.blank_item = [];
$scope.create_vars = function(limit){
  for(i=0; i<limit; i++){
    items[i] = [];
  };
};