是否可以将变量值用作另一个变量名称的一部分?

时间:2012-12-08 14:34:29

标签: javascript jquery

var b = '1';

如何使用变量b的内容创建变量名?我在每个循环中都这样做,所以b会改变。

我希望最终产品能够像:

var trip1 = '';

我将如何完成类似的事情?

var trip + b = '';
var trip.b = '';

4 个答案:

答案 0 :(得分:3)

不,但您可以使用对象的属性来执行此操作:

var obj = {};
obj.b = '1'
obj['trip' + obj.b] = '';

// or

var obj = {};
var b = '1'
obj['trip' + b] = '';

在JavaScript中,您可以通过两种方式访问​​属性:

  1. 使用点和文字属性名称,例如obj.trip1

  2. 使用括号和字符串属性名称,例如obj['trip1']

  3. 在后一种情况下,字符串不必是字符串文字,它可以是任何表达式的结果,因此上面的示例。

答案 1 :(得分:1)

  

我在每个循环中执行此操作

由于您正在迭代它们,最好的方法是使用数组。

var trip = [1,2,3,4,5];
for (var i = 0; i < trip.length; i++){
    alert(trip[i]);
}

要解决您的问题,您可以将值存储为对象的属性:

var obj = {};
var b = '1';
obj['trip' + b] = "";

如果您在全局范围内执行此操作,还可以将该变量添加为全局对象的属性:

var b = '1';
window['trip' + b] = "";

trip1; // == ""

答案 2 :(得分:0)

您可以通过窗口对象访问全局变量,使用如下动态键:

var b = '1';

trip1 = 'hello';

console.log(window['trip'+b]);

答案 3 :(得分:0)

听起来你正在寻找eval()方法。

var b = '1';
(eval('var trip'+b+' = 3')); // Is the same as writing var trip1 = 3;
console.log(trip1); 
//Output of variable trip1 is 3

虽然,快速谷歌搜索为什么eval();在你采用这种技术之前是不好的。