js 动态 批量 创建局部或全局变量 (转载)

一、借助对象(容器),批量创建:

//变量名称
var nameList=[ "BottomQuality", "HabitatComplexity", "VelocityOrDepthCombinationCharacteristics", "StabilityOfRiverOrLakeBank", "RiverHannelChange", "WaterQuantityConditions", "VegetationDiversityOrLakesideVegetation", "WaterQualityCondition", "IntensityOfHumanActivities", "LandUse"]
       // 动态批量创建变量
       var objData={}
        for(let k=0;k< nameList.length;k++){      
         objData[nameList[k]]=[];      
        }
     //批量给变量赋值,dataTemp来自数据库。
        for(let i=0;i<dataTemp.length;i++){
          for(let j=0;j< nameList.length;j++){      
            objData[nameList[j]].push(dataTemp[i][nameList[j]]);      
          }
        }

如果objData 在方法里面,那么就是批量创建局部变量(相对于该方法内的其它对象)。

如果objData 在方法外面,那么就是批量创建全局变量(相对于该方法的作用域)。

如果  删除 var objData={},直接将objData替换为全局变量window,那么就是创建全局变量(相对于window对象的作用域,一般指这个页面)。

在vue项目,删除 var objData={},直接将objData替换为全局变量this,那么就是创建全局变量(相对于该this的作用域,一般指页面或组件)。

转载来源

一、

https://blog.csdn.net/stevenzhong900610/article/details/40857087

借助全局对象window或eval方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <script>
 
 
        var obj = {}
 
        var num = 1;
 
        function na() {
 
            var names = 'name' + (num++);
            window[names] = '我爱你' + num;
 
        }
 
        function xxx() {
           
            alert( eval("name1"));
        }
 
    </script>
</head>
<body id="body" οnlοad="na()" >
     <input type="button" value="button" οnclick="xxx();" />
</body>
</html>
View Code

二、

https://www.cnblogs.com/Marydon20170307/p/9253957.html

  运用eval

/**
 * 声明一个函数
 * @explain 传参个数不确定
 */ 
function test() {
    for (var i = 0; i < arguments.length; i++) {
        //var param = arguments[i];
        eval("var param" + (i + 1).toString() + "= arguments[" + i + "]");
    }
    alert(param1);
}
// 调用
test('Marydon','http://www.cnblogs.com','动态创建变量演示');
View Code

和平常意义上的变量声明和赋值一样,eval()函数里面直接放字符串就行了,需要变动的是将其全部当成字符串来处理,涉及到变量的地方,需要使用拼接;上面这种情况,必须使用eval()才能实现,var param + (i + 1).toString() = arguments[i];,这种像往常一样的变量声明,会报错;字符串拼接数字时,需要将number类型转换成String类型。

原文地址:https://www.cnblogs.com/hao-1234-1234/p/11732962.html