您的位置:首页 > Web前端 > JavaScript

js字符串定义为变量名,通过字符串查找变量

2018-02-28 16:37 344 查看
最近在写js的时候碰到了难题,我又一个页面需要生成很多的变量。但是变量的名称是根据参数的不同而区分的。

1、字符串定义为变量名

例如可能需要生成的变量名字 url_1,url_2,url_3… (后面的数字是根据参数来的)。 所以我的函数名 应该由 var ‘变量名’ = “url_”+num; 生成函数名 但这问题就来了。

初始化变量时等号左边是不允许是表达式的。

所以
var "url_"+num = " http://www.1234.com";[/code] 这肯定是错误的。后来问了度娘后才知道。可以使用  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]=
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: