如何使用 eval 在 Javascript 动态变量中将左侧结果分配给自身?

问题描述 投票:0回答:1

我正在学习使用动态变量的 javascript。我有以下代码和相关错误,但我不明白。我读过很多类似的 javascript 动态代码的回复,但他们不使用 eval()。 (我在nodejs中使用eval())

let updatedArray = { 
    "firstNameArray": 'haha',
    "lastNameArray": 'zaza',
    "count": 0
};

let name = { "batch": "1" }; 

let firstNames_1 = [];
let lastNames_1 = [];
let count_1 = 0;

eval( 'firstNames_' + name.batch ) = updatedArray.firstNameArray;
eval( 'lastNames_' + name.batch ) = updatedArray.lastNameArray;
eval( 'count_' + name.batch ) = updatedArray.count;

我尝试运行上面的代码,但我陷入了这个nodejs错误。

ReferenceError: Invalid left-hand side in assignment
对于
eval( 'firstNames_' + name.batch ) = updatedArray.firstNameArray;

node.js
1个回答
0
投票

您不能分配给函数调用的结果。您需要将整个作业放入

eval()
参数中。

let updatedArray = { 
    "firstNameArray": 'haha',
    "lastNameArray": 'zaza',
    "count": 0
};

let name = { "batch": "1" }; 

let firstNames_1 = [];
let lastNames_1 = [];
let count_1 = 0;

eval( 'firstNames_' + name.batch + ' = updatedArray.firstNameArray' );
eval( 'lastNames_' + name.batch + ' = updatedArray.lastNameArray' );
eval( 'count_' + name.batch + ' = updatedArray.count' );
console.log(firstNames_1, lastNames_1, count_1);

但是您通常应该避免使用动态变量和

eval()
。每当您发现自己使用这样的连续数字名称创建变量时,您都应该使用数组。

let firstNames = [];
firstNames[name.batch] = updatedArray.firstNameArray;
© www.soinside.com 2019 - 2024. All rights reserved.