在 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] = [];
};
};
我正在尝试根据另一个变量创建动态生成的变量,例如:
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] = [];
};
};