4 回答

TA貢獻1909條經驗 獲得超7個贊
對此沒有單一的解決方案(嗯,有eval
,但不要認真考慮)??梢酝ㄟ^動態訪問某些全局變量window
,但這對于函數本地變量不起作用。不成為屬性的全局變量是window
用let
和定義的變量const
,以及class
es。
幾乎總是比使用變量變量更好的解決方案!相反,您應該查看數據結構并為您的問題選擇正確的數據結構。
如果你有一組固定的名字,比如
// BAD
var foo = 42;
var bar = 21;
var key = 'foo';
console.log(eval(key));
將這些名稱/值存儲為對象的屬性,并使用括號表示法動態查找它們:
// GOOD
var obj = {
foo: 42,
bar: 21,
};
var key = 'foo';
console.log(obj[key]);
在ES2015 +中,使用簡潔的屬性表示法為現有變量執行此操作更加容易:
// GOOD
var foo = 42;
var bar = 21;
var obj = {foo, bar};
var key = 'foo';
console.log(obj[key]);
如果你有“連續”編號的變量,例如
// BAD
var foo1 = 'foo';
var foo2 = 'bar';
var foo3 = 'baz';
var index = 1;
console.log(eval('foo' + index));
然后你應該使用數組而只是使用索引來訪問相應的值:
// GOOD
var foos = ['foo', 'bar', 'baz'];
var index = 1;
console.log(foos[index - 1]);

TA貢獻1788條經驗 獲得超4個贊
要在javascript中僅使用字符串引用變量,您可以使用
window['your_variable_name']
您也可以在變量中設置和引用變量和對象。
添加回答
舉報