4 回答

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

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