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>
二、
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','动态创建变量演示');
和平常意义上的变量声明和赋值一样,eval()函数里面直接放字符串就行了,需要变动的是将其全部当成字符串来处理,涉及到变量的地方,需要使用拼接;上面这种情况,必须使用eval()才能实现,var param + (i + 1).toString() = arguments[i];,这种像往常一样的变量声明,会报错;字符串拼接数字时,需要将number类型转换成String类型。
树立目标,保持活力,gogogo!