在JavaScript中使用动态变量名称

在JavaScript中使用动态变量名称

在PHP中你可以做这样惊人/可怕的事情:


$a = 1;

$b = 2;

$c = 3;

$name = 'a';

echo $$name;

// prints 1

有没有办法用Javascript做这样的事情?


例如,如果我有一个var name = 'the name of the variable';可以获得名称变量的引用name?


小怪兽爱吃肉
浏览 3720回答 4
4回答

萧十郎

由于ECMA- / Javascript都是关于Objects和Contexts(它们也是Object的一些),每个变量都存储在一个这样的变量中(或者在函数,激活对象的情况下)。所以如果你创建这样的变量:var a = 1,    b = 2,    c = 3;在全局范围(= NO函数上下文)中,您隐式将这些变量写入Global对象(= window在浏览器中)。可以使用“点”或“括号”表示法访问这些:var name = window.a;要么var name = window['a'];这仅适用于在这种特定情况下的全局对象,因为变量对象中的全局对象是window对象本身。在函数的上下文中,您无法直接访问激活对象。例如:function foobar() {   this.a = 1;   this.b = 2;   var name = window['a']; // === undefined   alert(name);   name = this['a']; // === 1   alert(name);}new foobar();new创建自定义对象(上下文)的新实例。没有new函数的范围也会global(= window)。这个例子将提醒undefined和1分别。如果我们将替换this.a = 1; this.b = 2为:var a = 1,    b = 2;两个警报输出都是未定义的。在这种情况下,变量a和b会被存储在从启动对象foobar,这是我们不能访问(当然,我们可以直接调用访问那些a和b)。

小唯快跑啊

eval 是一种选择。var a = 1;var name = 'a';document.write(eval(name)); // 1

慕雪6442864

您可以使用window对象来获取它。window['myVar']window 引用了您正在使用的所有全局变量和全局函数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript