当前位置: 首页 > 面试题库 >

Javascript中的“变量”变量?

谢唯
2023-03-14
问题内容

我知道在PHP中可能有“变量”变量。例如

$x = "variable";
$$x = "hello, world!";
echo $variable; // displays "hello, world!"

是否可以在JavaScript中将变量的名称引用为字符串?怎么做?


问题答案:

对此没有单一的解决方案(当然,有eval,但是请不要认真考虑)。可以通过来动态访问 一些 全局变量window,但这不适用于函数本地的变量。
不会 成为属性的全局变量是window使用letconst和定义的变量class

几乎总是比使用可变变量更好的解决方案!
相反,您应该查看数据结构并为您的问题选择正确的结构]。

如果您有一组固定的名称,例如

// 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]);


 类似资料:
  • 主要内容:1. 变量的命名规则,2. 定义变量,3. 为变量赋值,4. 变量提升,5. let 和 const 关键字变量是所有编程语言的基础之一,可以用来存储数据,例如字符串、数字、布尔值、数组等,并在需要时设置、更新或者读取变量中的内容。我们可以将变量看作一个值的符号名称。 1. 变量的命名规则 在 JavaScript 中,变量名称并不能随便定义,需要遵循标识符的命名规则,如下所示: 变量名中可以包含数字、字母、下划线、美元符号; 变量名中不能出现汉字; 变量名中不能包含空格; 变量名不能

  • 变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。 变量就是存放一些内容的容器。 对于初学者,理解变量是重要的一环。 从分析变量这个名词,可以知道他是一个可以改变的量,这里的量就是代表某一种值。 在 JavaScript 中,变量就是一个用来存放值的容器,并且可以对容器中的值做修改。 每个变量都有唯一的变量名,使用变量名来区分变量。 1. 声明变量 在 JavaScript 中使用v

  • 我想获取所选框的值,并将其保存在PHP变量中。我想保存并回显变量。请帮忙

  • 问题内容: 如何在Javascript中创建静态变量? 问题答案: 如果您来自基于类的静态类型的面向对象的语言(例如Java,C++或C#),那么我假设您正在尝试创建与“类型”相关但与实例无关的变量或方法。 使用带有构造函数的“经典”方法的示例可能会帮助您了解基本的OO JavaScript概念: 是在MyClass对象(它是一个函数)中定义的,并且与创建的实例无关,JavaScript将函数视为

  • 问题内容: 我知道有很多关于此的帖子,但是我找不到我的特定问题的答案。 我想让JS变量成为HTML属性的值 VARIABLE HERE是我想要screenWidth变量去的地方。最好的办法是什么? 谢谢,本 问题答案: 这应该工作:

  • 问题内容: 我想通过使用以下代码来获取全局变量中的数据: 但是问题是我只是在d3.json函数中定义了数据变量,但是没有定义。我该如何解决这个问题? 谢谢 问题答案: 由于d3请求(如)是异步的,因此最佳做法是将所有依赖于外部请求的代码包装在请求回调中,以确保该代码在执行之前可以访问数据。来自D3 docs :“异步加载数据时,依赖于已加载数据的代码通常应存在于回调函数中。” 因此,一种选择是将所