我正在学习使用动态变量的 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;
您不能分配给函数调用的结果。您需要将整个作业放入
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;