最近在写js的时候碰到了难题,我又一个页面需要生成很多的变量。但是变量的名称是根据参数的不同而区分的。
1、字符串定义为变量名
例如可能需要生成的变量名字 url_1,url_2,url_3… (后面的数字是根据参数来的)。 所以我的函数名 应该由 var ‘变量名’ = “url_”+num; 生成函数名 但这问题就来了。
初始化变量时等号左边是不允许是表达式的。
所以var "url_"+num = " ";
这肯定是错误的。后来问了度娘后才知道。可以使用 window[字符串变量名] = 100 这种方式来定义变量。看代码
function createVariable(num){var name = "url_"+num; //生成函数名window[name] = 100;//注意看中括号里的内容加引号和不加引号的区别//加引号代表name为字符串,而不是上面的name变量'url_*'window['name'] = 200; }create_variable(2);alert(url_2); // 100;alert(name); //200;
window用中括号的方式定义 变量时,中括号里的内容应该是字符串。如果是一个变量的话,他就会解析这个变量找到具体的值。
2、通过字符串查找变量
这种情况是我已经定义好了多个类似“url_1,url_2,url_3……”的有规律变量,但是当动态引用变量的时候获取变量的值是个问题
//使用freemarker遍历集合批量生成变量 <#list audioUrlList?if_exists as item>var audioUrl_${item_index}="${item}";</#list>
根据指定的角标调用时可以用
function getUrl(index){var variableName = "audioUrl_"+index;return eval(variableName);}
eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码
附:其他方式解决 字符串定义为变量名
1、用对象的形式
var object = {};for(var i=0;i<10;i++){object['var_'+i]='';}
2、用数组的形式
var arr=[];for(var i=0;i<xxx.length;i++ ){arr[i]=}
如果觉得《js字符串定义为变量名 通过字符串查找变量》对你有帮助,请点赞、收藏,并留下你的观点哦!