美文网首页
Javascript中字符串转为变量名的4种解决方案

Javascript中字符串转为变量名的4种解决方案

作者: liudai123 | 来源:发表于2017-10-23 17:55 被阅读9次

    Js编程过程中,或多或少会出现需要动态生成一系列变量名,数量比较大时也不方便提前声明,这时候可能就需要先进行字符串拼接,然后将拼接的字符串转换为变量名。

    当我们需要生成很多的变量,但是变量的名称是根据参数的不同而区分的,如 date_1,date_2,datet_3... (后面的数字是根据参数来的),那我们就需要写一个var name = "test_"+num;,这样的函数来生成变量名。

    1、最简便的方法,通过var name = eval('test_'+num)这样就可以了,但并不推荐使用eval函数。

    2、使用window[name] 等价于window.name可以改造为var name = window['test_'+num],缺点一目了然,污染了全局变量,不过可以将其挂在到局部变量上。

    3、使用new Function

    function strToVar(str) {

    var json = (new Function("return " + str))();

    return json;

    }

    strToVar("name")

    console.log(name)//true,变量已生成,但未赋值。

    eval(),new Function() 性能安全性并不好,不推荐使用

    4、采用数组的形式

    var arr = [];

    for (var i = 0,var len = some.length; i < len; i++){

    arr[i]['test_'  +i]= null;

    }

    变量在数组中都有对应的下标,赋值和调用都不是很方便,但可能在特殊的使用环境中有奇效。

    总结:最佳使用方法通过var name = obj[strname]实现字符串转为变量。

    相关文章

      网友评论

          本文标题:Javascript中字符串转为变量名的4种解决方案

          本文链接:https://www.haomeiwen.com/subject/dywauxtx.html