2011-04-01 68 views
1

我想知道是否有可能創建在用javascript編程時由用戶命名的變量。創建用戶命名的變量?

例如讓我說我有一個文本框和按鈕來提交值的JS函數,該文本框中的文本的值。 var newvar = document.getElementById("mytxtbox").value;

是否有可能創建一個變量,無論'newvar'的值是什麼?

我意識到這是一個非常奇怪的問題,但我認爲這將是最好的地方問。

感謝您的所有意見,
邁克。

+2

你爲什麼要這麼做那? – CarlosZ 2011-04-01 03:34:22

回答

1

這通過eval函數可以

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

這將導致通過創建文本框值指示的名稱的全局變量。

我必須問,這對你有什麼好處?它只是打開一扇門,讓用戶在你的應用程序中垃圾任何全局狀態

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

0

可以很容易地創建具有特定名稱的全局變量:

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

這是很難找到一個很好的理由這樣做。

我不認爲有一個類似的方法來創建一個新的局部變量。

0

yeap,使用eval來創建該變量。但是,無論何時需要使用此變量,您可能都需要使用eval。

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

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

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

好了,我不想知道你爲什麼需要這一點,但如果你提到,我們也許能夠找到你一個更好的解決辦法不是這樣:)