Javascript创建了许多变量

时间:2014-07-23 21:23:39

标签: javascript variables

我有一个数组

    var n = ["Joe", "Peter", "Mary", "Chris", "Dave", "Sally", "Pat", "John", "Larry", "Andrew"];

我想为数组中的每个字符串创建一个变量,即

    var Joe;
    var Peter;
    var Mary;

我遇到了this的MatLab,但有没有办法用Javascript做到这一点?

这是Fiddle我想到的方法,但很明显它不起作用!

4 个答案:

答案 0 :(得分:6)

  

...有没有办法用Javascript做到这一点?

不在通用情况下,没有。 (呃,见下文。)你可以用全局变量做到这一点,如下所示:

var index;
for (index = 0; index < n.length; ++index) {
    window[n[index]] = /*...whatever value you want the global to have...*/;
}

...但这仅适用于全局变量(并且window特定于浏览器环境,尽管它可以执行类似的外部浏览器),并且禁止某些特定原因,这不是一个好主意。

您可以为每个名称创建一个具有属性的对象:

var obj = {};
var index;
for (index = 0; index < n.length; ++index) {
    obj[n[index]] = /*...whatever value you want the global to have...*/;
}

...这基本上是全局变量的情况,但是有一个对象而不是全局变量。但是,除非你有充分的理由去做,否则有一点小问题(尽管它不像创建一堆全局变量那样有害)。


好的,那不是相当是真的。你可以这样做:

var index;
for (index = 0; index < n.length; ++index) {
    eval("var " + n[index]);
}

实际上,这将使用n中的名称在当前范围内创建变量。我不推荐它。 : - )

答案 1 :(得分:3)

我不建议这样做,但可以使用:

var i;
for(i=0; i<n.length; i++) {
    window[n[i]] = ...;
}

我建议使用以下方法将它们包装在一个对象中:

var i, holder = {};
for(i=0; i<n.length; i++) {
    holder [n[i]] = ...;
}

答案 2 :(得分:0)

您可以使用关联数组。所以它可能看起来像这样:

var array = {
     "John": 1,
     "Mary": 284
};

然后你将通过array["John"]引用这个值,然后返回1。

答案 3 :(得分:0)

您可以创建如下对象:

var names = {
    Joe: "...",
    Mary: "...",
    // etc...
}

并访问:

names.Joe