如何使用eval为动态变量赋值?

jur*_*rts 7 javascript

我得到了动态变量名称

varname = "data" + newid + "['" + name + "']";
Run Code Online (Sandbox Code Playgroud)

我想为动态变量赋值.我试过这个

eval(varname) = value; 
Run Code Online (Sandbox Code Playgroud)

但它不起作用.为了为动态变量赋值,我需要做什么?

Que*_*tin 8

不要使用eval.不要使用动态变量.

如果您有一组无序的相关数据,请将其存储在对象中.

var myData = {};
myData[ newid + name ] = value;
Run Code Online (Sandbox Code Playgroud)

虽然看起来你正在处理一个动态对象

myData[ newid ] = myData[ newid ] || {};
myData[ newid ][ name ] = value;
Run Code Online (Sandbox Code Playgroud)


Joã*_*lva 7

var data1 = { a: 200 };
var newid = 1;
var name = "a";

var varname = "data"+newid+"['"+name+"']";
var value = 3;
eval(varname + "=" + value); // change data1['a'] from 200 to 3
Run Code Online (Sandbox Code Playgroud)

话虽如此,eval是邪恶的.你真的确定需要使用动态变量吗?