【转载】Javascript中字符串转为变量名的4种解决方案
Js编程过程中,或多或少会出现需要动态生成一系列变量名,数量比较大时也不方便提前声明,这时候可能就需要先进行字符串拼接,然后将拼接的字符串转换为变量名。
当我们需要生成很多的变量,但是变量的名称是根据参数的不同而区分的,如 date_1,date_2,datet_3... (后面的数字是根据参数来的),那我们就需要写一个var name = "test_"+num;,这样的函数来生成变量名。
- 最简便的方法,通过
var name = eval('test_'+num)这样就可以了,但并不推荐使用eval函数。 - 使用
window[name]等价于window.name可以改造为var name = window['test_'+num],缺点一目了然,污染了全局变量,不过可以将其挂在到局部变量上。 - 使用new Function
function strToVar(str) { var json = (new Function("return " + str))(); return json; } strToVar("name") console.log(name)//true,变量已生成,但未赋值。eval(),new Function() 性能安全性并不好,不推荐使用。
- 采用数组的形式
var arr = [];
for (var i = 0,var len = some.length; i < len; i++){
arr[i]['test_' +i]= null;
}
变量在数组中都有对应的下标,赋值和调用都不是很方便,但可能在特殊的使用环境中有奇效。
总结:最佳使用方法通过var name = obj[strname]实现字符串转为变量。

浙公网安备 33010602011771号