jQuery在for循环中动态增加变量名

4

在for循环内部将i加入变量中是否可行? 错误的语法如下所示:

for(i=1; i<=countProjects; i++){

    var test + i = $(otherVar).something();

};

谢谢!

你应该使用数组。 - Mat
3
他想要递增变量名。这就是问题。 - Henrik Andersson
请详细说明。是增加变量还是变量名称? - Jivings
你想对 test 变量进行什么操作? - Software Engineer
抱歉如果我表达不清楚,这个变量名是test。所以如果i等于3,你会得到test1,test2和test3。 - Matthias O.
2个回答

7

对于这个问题,最好使用一个数组:

var test = [];

for (i = 1; i <= countProjects; i++) {
    test[i] = $(otherVar).something();
};

那么你可以像这样访问值:
console.log(test[1]);
console.log(test[2]);
etc...

如果您真的有充分的理由为每个值命名变量,可以按如下方式创建它们:
for (i = 1; i <= countProjects; i++) {
    window["test" + i] = $(otherVar).something();
};

console.log(test1);

如果在跟踪中没有使用作用域指示(console.log(window.test1);),那么window["test"...]只能在全局范围内访问。在我看来,你不应该假设它总是全局范围。 - joncys

5

正如Mat所说,你应该使用数组来实现这种功能:

var projects = [];
for (var i = 0; i <= countProjects; i++) {
    projects.push($(otherVar).something());
}

您可以使用object["varname"]语法来编写变量名,但这通常是不好的做法:

var varName;
for (var i = 0; i <= countProjects; i++) {
    varName = "test" + i.toString();
    this[varName] = $(otherVar).something();
}
console.log(test1);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接