【问题标题】:reading all variables dynamically from external JS file从外部 JS 文件动态读取所有变量
【发布时间】:2015-07-27 14:58:44
【问题描述】:

我正在加载一个外部 javascript 文件,其中仅填充了带有 int 或字符串或布尔值或数组的变量。比如……

varBool=false;
var1="var1";
var2="var2:";
var3="var3";
anothervar3="anotehr var 3";
var5="var5";
testvar2="test var 2";
var7="var7";
var8="var8";
myvar34="myvar 34";
var10="var 10:";

morevars2="more vars!";
morevarshere="more vars here.";
morevars5="more vars.";
morevarsthere="more vars there";
myarray=new Array(1);
myarray[0]="d";
anotherarray=new Array(5);
anotherarray[0]="value 1";
anotherarray[1]="value 2";
anotherarray[2]="value 3";
anotherarray[3]="value 4";
anotherarray[4]="value 5";

我已经阅读了一些关于通过访问变量名本身从父 JS 访问这些变量的问题。但是每次加载新的 JS 时,我要加载的文件都会有不同的值集。是否可以在不指定确切的 var 名称的情况下动态获取值?

谢谢!

【问题讨论】:

  • 你最后做了什么决定?

标签: javascript jquery variables


【解决方案1】:

改为创建一个 JSON 对象来存储数据。然后您可以遍历对象以获取键/值对。

var vars = '{"name": "Someone","number": 15,"type": "something"}';

var json = JSON.parse(vars);

for (var key in json){
    console.log(key + ' => ' + json[key]);
}

【讨论】:

    【解决方案2】:

    我假设您无法控制外部 javascript 文件

    您示例中的所有变量都将在global 范围内定义。这意味着它们被分配给window 对象。

    然后您可以使用 dotbracket 语法访问它们:

    // dot syntax
    window.var1; 
    // -> "var1"
    
    // bracket syntax
    window['var1']; 
    // -> "var1"
    

    所以你不需要知道确切的变量名,你可以检查变量是否定义在window对象上并使用括号符号来获取值

    【讨论】:

    • 我没有得到他无权访问外部文件的印象,只是他想为他的所有变量拥有一个主包含文件。也就是说,如果他别无选择,这将是一个很好的解决方案,但值得指出的是那些不知道的人,Global Variables Are generally Bad
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 2016-10-02
    • 1970-01-01
    相关资源
    最近更新 更多