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

Reference Error when dynamically creating variables with eval() in Angular

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

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

我的逻辑有什么根本性的错误吗?

这与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] = [];
  };
};