从变量设置javascript变量名

时间:2010-10-14 15:59:01

标签: javascript

您可以从其他变量设置var名称吗?

例如,每次调用函数时,var test都有不同的数字,所以我希望数字是变量名,例如var test包含'1',因此新变量将为var 1。然后,我想在这个数字“单词”中添加一个单词,以使新变量变为var 1word

var newNumber = 1;
var newNumber += 'word';
       ^ becomes ' 1 '
the new var name becomes ' 1word '

编辑:

function getNumber(newNumber) //  Gets a number, for this example say its the number '1' 
    {

        var newNumber += "something";  //The new varaible will be named "1something" (something can be any word)

    }

希望我没有让它听起来太混乱,谢谢。

8 个答案:

答案 0 :(得分:3)

您可以将变量放在对象中,并使用字符串键索引对象。

例如:

var myData = { };
myData.x1 = 42;
alert(myData["x" + 1]);

您还可以使用对象表示法初始化对象:

var myData = { key: 42 };

答案 1 :(得分:3)

Javascript中的所有内容基本上只是一个关联数组。这意味着您可以或多或少地交替使用数组访问符号和点符号。数组访问表示法提供了您正在寻找的功能:

object["name"]="foo"

将在给定对象上设置name属性。

如果要创建全局变量,请使用窗口对象

window["name"]="foo"

您还可以在方括号

中使用表达式或变量
window[someVaribale]="foo";
window["name_" + someVariable]="foo";

答案 2 :(得分:3)

我可以理解,您希望创建一个以另一个变量的内容命名的变量。

不确定您是否可以直接执行此操作,但您可以使用对象轻松地完成此任务。

var obj = new Object();
obj['original'] = 'name';
obj[obj]['original']] = 'another name';

该对象现在具有结构:

{
  'original': "name",
  'name': "another name" #variable named after original's contents
}

答案 3 :(得分:2)

如果将所有变量存储在对象/数组中,有一种简单的方法可以实现此目的。请记住,在javascript中,数组是对象,对象是对象等:p

var mystuff = {}; // new object literal

var numVariables = 10;

for (var i = numVariables - 1; i >= 0; i--){
    var newkey          = i + "_my_index";
    mystuff[newkey]     = "some stuff";
}

答案 4 :(得分:2)

如果你在例子中使用数字“变量”(var 1; var 2;) 你应该使用Array;

var list=[]; //declaration

list[1]="something"; //create a "variable" 1 with 'something' inside

list[2]="other thing"; //create another variable

var name=3;
var value="Hello";

list[name]=value; //works too

alert( list[1] ); //something

如果您使用单词作为“关键字”,则应使用对象而不是数组

var list={}; //declaration

list["car1"]="Honda";
list["car2"]="Toyota";
list["fuit"]="Apple";

var name="greeting";
var value="Hello";

list[name]=value; //works too

alert( list["car2"] ); //Toyota
希望你理解。

答案 5 :(得分:1)

我们需要更多地解释你想要完成的事情。这看起来真的很糟糕。很可能你真的应该只使用一个命名的索引数组。例如

var stuff = {}
stuff[1] = "one";
stuff["name"] = "david";

答案 6 :(得分:0)

我对您的问题感到困惑,但似乎您想要更改无法完成的变量名称。您可以使用所需名称创建一个新变量,并为其指定所需的任何值。

我的问题是你为什么要这样做?

答案 7 :(得分:0)

您可以使用内置方法实现此目的: eval(“你的javascript代码在这里”);

所以也许在你的情况下它会是这样的: eval(“var yourNewName = \”“+ yourOldVarValue +”\“”); 然后使你的旧变量无效。

但正如其他人所表达的那样,我看不出为什么或者在哪种情况下你想要重命名一个变量(除非它是一些奇怪的黑客技巧大声笑)。

[未经过测试,因此这个评估可能不起作用:S]