Javascript 如何替换变量';在.js文件中有一个带字符串的名称吗?

Javascript 如何替换变量';在.js文件中有一个带字符串的名称吗?,javascript,Javascript,我想用另一个变量引用一个变量。第一个变量的值是一个字符串,等于第二个变量的名称。如何做,说: var1 = "var2"; var2 = [1,2,3]; console.log(var1[0]); 得到1而不是v 我的代码: localStorage.setItem('scn', 'AR1'); var AR1 = [1,3,4,6]; var AR2 = [1,3,5,6]; var AS2 = [1,3,7,8,9,10]; here_idx = localSt

我想用另一个变量引用一个变量。第一个变量的值是一个字符串,等于第二个变量的名称。如何做,说:

var1 = "var2";
var2 = [1,2,3];

console.log(var1[0]);
得到1而不是v

我的代码:

localStorage.setItem('scn', 'AR1');

var AR1 = [1,3,4,6];
var AR2 = [1,3,5,6];
var AS2 = [1,3,7,8,9,10];

here_idx = localStorage.getItem('scn').indexOf(1);
在这种情况下,_idx等于2而不是0


我试图用一个错误来解析它。我甚至不知道如何在网上搜索这样的问题。我试过了。

您可以使用非结构化赋值从数组中赋值变量

const[z,x,y]=[1,2,3,4,5,6];

控制台日志(z,x,y)//输出[1,2,4]
一种方法。但不建议如下所示:(使用eval()

尽管:

var2=[1,2,3];
var1=评估(“var2”);

console.log(var1[0])
您可以使用
窗口[varname]
获取先前声明的变量,该变量具有
窗口
范围内的
var
(而不是
let
const

Fiddle,因为代码段不允许本地存储:

“var2”和var2不一样。您可以执行以下操作

var1 = var2;
var2 = [1,2,3];

console.log(var1[0]); // outputs 1 not 'v'


在初始化var1的同一作用域中进行尝试:[var1][0]不建议使用eval。看,我的回答中已经说过了。但它并不是非法或无效的,因为它是完全受支持的。这不是一个不推荐使用的关键字。这是唯一的建议答案,在我的情况下有效。谢谢注意,这只适用于使用
var
声明的变量,而不适用于使用
let
const
声明的变量。如果要使变量成为全局变量,通常更明确的做法是将其显式声明为
window
的属性:
window.AR1=…
等对我不起作用。结果与我的代码中的情况相同。@Warxuaroz这里的代码确实有效,这是一个骗局:所以你不能正确使用它,或者你的代码示例没有显示你实际上在做什么。你能扩展这个答案吗?我不知道这里发生了什么。这会起作用,但我需要保持var1和var2不变,以备以后使用。除非您更改它们,否则变量将保持不变。所以不确定问题是什么。将变量名指定为字符串的用例是什么?我遵循一个名为AR1的场景,我希望在场景中的每个.html中都知道它,因此我将它存储在“scn”下的localStorage中。我还需要知道,我的“后退”和“下一步”按钮应该放在哪里,因此AR1数组包含所有的.htmls名称。
var1 = var2;
var2 = [1,2,3];

console.log(var1[0]); // outputs 1 not 'v'
var AR1 = [1,3,4,6];
localStorage.setItem('scn', AR1);

here_idx = localStorage.getItem('scn').indexOf(1);//outputs 0