我想知道在javascript编程时是否可以创建用户命名的变量。
例如,假设我有一个文本框和按钮,可以将值提交给JS函数,该函数获取文本框中文本的值。 var newvar = document.getElementById("mytxtbox").value;
是否可以创建一个可以调用的变量,无论“newvar”的值是什么?
我意识到这是一个非常奇怪的问题,但我认为这是最好的问题。
感谢所有反馈,
麦克
答案 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 + ")");
好吧,我不想知道你为什么需要这个,但如果你提到,我们或许可以找到比这更好的解决方案:)