<script>
//in one script
var someVarName_10 = 20;
</script>
我想通過變量的名稱從另一個腳本訪問此變量。用window對象很簡單,用局部變量可能嗎?通過JavaScript中的名稱字符串動態獲取全局變量
我的意思是這樣的代碼訪問該變種:
<script>
alert(all_vars['someVar' + 'Name' + num]);
</script>
<script>
//in one script
var someVarName_10 = 20;
</script>
我想通過變量的名稱從另一個腳本訪問此變量。用window對象很簡單,用局部變量可能嗎?通過JavaScript中的名稱字符串動態獲取全局變量
我的意思是這樣的代碼訪問該變種:
<script>
alert(all_vars['someVar' + 'Name' + num]);
</script>
你想做這樣的事嗎?
<script>
//in one script
var someVarName_10 = 20;
alert(window["someVarName_10"]); //alert 20
</script>
更新:因爲OP編輯的問題。
<script>
num=10;
alert(window['someVar' + 'Name_' + num]); //alert 20
</script>
對不起,我錯了,我認爲增值稅不在窗口,謝謝 – 2009-12-17 10:59:43
不客氣。 – YOU 2009-12-17 11:00:46
我不在乎OP *實際*想要什麼。我關心什麼是問題標題,因此成爲我的搜索谷歌結果。 – 2015-10-22 08:15:32
如果這是你說的話:
<script type="text/javascript">
var hello = 'test';
</script>
<script type="text/javascript">
alert (hello);
</script>
它的工作原理,因爲腳本是最後提供給文檔,你可以訪問他們的瓦爾。
我注意到,每個人都建議全局var創建這將導致變量泄漏到全局名稱空間。 當你動態創建的類名或只是變量很容易讓EM地方:
this['className'] = 123;
或
this['varName'] = 123;
名稱間距應該是這樣的:
vars = {};
vars['varName'] = 123;
vars.varName // 123
'var this ['className'] = 123;'對我來說看起來像是一個語法錯誤。 – 2013-01-19 01:33:25
你對我不知道爲什麼我加了var – 2013-04-07 19:54:42
這比接受的答案要好。有關此功能如何在類作用域中工作的更多描述。 – 2015-06-22 01:54:01
<script>
var someVarName_10 = 20;
var num = 10;
alert(eval('someVar' + 'Name_' + num)); //alert 20
</script>
'eval'對我來說效果更好!但謹慎使用它 – papaiatis 2016-11-09 13:14:43
好,對於調試目的只有,你可以做這樣的事情。我在開發類時使用它,其中一些變量必須保持私有(var)。這項工作甚至在局部變量(和全局詛咒)中也是如此
function MYCLASS(){
var a=1, b=2, c=3;
this.public = "variable";
this.debug = function(sVar){
return eval(sVar);
}
}
var myThing = new MYCLASS();
myThing.debug('a') //return 1
myThing.debug('b') //return 2
myThing.debug('c') //return 3
您的示例顯示了一個全局變量。你想知道你是否可以從本地範圍訪問它? – 2009-12-17 10:46:58
這真的取決於你的意思是'本地範圍'.. JavaScript的功能只限於功能,而不是塊或甚至文件 – 2009-12-17 10:50:40
可能的重複[有沒有一種方法來訪問一個JavaScript變量使用字符串包含的名稱變量?](http://stackoverflow.com/questions/1441532/is-there-a-way-to-access-a-javascript-variable-using-a-string-that-contains-the-n) – Gilles 2011-05-29 20:56:54