Javascript 创建用户命名变量?

Javascript 创建用户命名变量?,javascript,html,Javascript,Html,我想知道在使用javascript编程时是否可以创建由用户命名的变量 例如,假设我有一个文本框和按钮,用于将值提交给JS函数,该函数接受文本框中文本的值var newvar=document.getElementById(“mytxtbox”).value 有没有可能创建一个变量,无论“newvar”的值是什么,都可以调用它 我意识到这是一个非常奇怪的问题,但我认为这将是最好的提问地点 感谢所有反馈, 迈克。这可以通过eval功能实现 var newVar = document.getEleme

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

例如,假设我有一个文本框和按钮,用于将值提交给JS函数,该函数接受文本框中文本的值
var newvar=document.getElementById(“mytxtbox”).value

有没有可能创建一个变量,无论“newvar”的值是什么,都可以调用它

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

感谢所有反馈,

迈克。

这可以通过eval功能实现

var newVar = document.getElementById('mytxtbox').value;
eval(newVar + ' = 42');
这将导致创建由文本框值指示的名称的全局变量

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

您可以使用它,但为什么要这样做呢?您如何知道在
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

的所有风险创建具有特定名称的全局变量很容易:

window[newVar]="This is a new variable";
很难找到这样做的好理由


我认为没有类似的简单方法来创建新的局部变量。

是的,使用eval来创建该变量。但您可能需要在需要使用此变量时使用eval

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

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

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

嗯,我不想知道您为什么需要这个,但如果您提到,我们可能会为您找到一个比这样做更好的解决方案:)

您为什么要这样做?