• 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类型。

  • 相关阅读:
    HDU 5818 Joint Stacks (优先队列)
    POJ 3169 Layout (差分约束系统)
    HDU 4370 0 or 1 (最短路+最小环)
    LightOJ 1074 Extended Traffic (最短路spfa+标记负环点)
    HDU 1142 A Walk Through the Forest (求最短路条数)
    力扣71——简化路径
    力扣73——矩阵置零
    ThreadLocal的进化——TransmittableThreadLocal
    ThreadLocal的进化——InheritableThreadLocal
    Java——内部类详解
  • 原文地址:https://www.cnblogs.com/hao-1234-1234/p/11732962.html
Copyright © 2020-2023  润新知