创建用户命名变量?

时间:2011-04-01 03:32:19

标签: javascript html

我想知道在javascript编程时是否可以创建用户命名的变量。

例如,假设我有一个文本框和按钮,可以将值提交给JS函数,该函数获取文本框中文本的值。 var newvar = document.getElementById("mytxtbox").value;

是否可以创建一个可以调用的变量,无论“newvar”的值是什么?

我意识到这是一个非常奇怪的问题,但我认为这是最好的问题。

感谢所有反馈,
麦克

4 个答案:

答案 0 :(得分:2)

你可以用eval来做,但你为什么要这样做?您如何知道在eval之外调用新变量的内容?执行此类操作的更好方法是使用对象作为排序的运行时命名空间:

var o = { };
var v = document.getElementById('some-text').value;
o[v]  = 'Where is pancake house?';

for(var p in o)
    console.log(p + ' was made at runtime and has a value of ' + o[p]);

使用对象作为命名空间可能会让您在没有eval的所有伴随风险的情况下执行您正在尝试的任何操作。

答案 1 :(得分:1)

这可以通过eval函数

实现
var newVar = document.getElementById('mytxtbox').value;
eval(newVar + ' = 42');

这将导致创建由文本框值指示的名称的全局变量。

我必须问,这对你有什么好处?它只是为用户打开了一扇门,可以删除应用程序中的任何全局状态

答案 2 :(得分:0)

使用特定名称创建全局变量很容易:

window[newVar]="This is a new variable";

找到这样做的理由很难。

我认为创建一个新的局部变量并不是一种同样简单的方法。

答案 3 :(得分:0)

是的,使用eval创建该变量。但是,只要需要使用此变量,就可能需要使用eval。

var newVarName = document.getElementById("mytxtbox").value;

//declaration    
eval("var " + newVarName + " = " + newVarName);

//using it
eval("alert(" + newVarName + ")");

好吧,我不想知道你为什么需要这个,但如果你提到,我们或许可以找到比这更好的解决方案:)