【问题标题】:Reference Error when dynamically creating variables with eval() in Angular在 Angular 中使用 eval() 动态创建变量时的参考错误
【发布时间】:2015-12-22 02:17:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: angularjs eval referenceerror dynamic-variables


    【解决方案1】:

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

    【讨论】:

    • 哇,太完美了!我不敢相信我没有想到这一点。谢谢! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    相关资源
    最近更新 更多