如何用JavaScript编写循环

riy*_*iya 0 javascript

我尝试制作这样的代码:

var code1 = a, code2 = b, code3 = c;
var x = 3;

for (y = 1; y <= x; y++) {
  //this part where i dont know about
  alert ();
}
Run Code Online (Sandbox Code Playgroud)

那么如何让它警告code1,code2和code3?我的意思是这会警告值a,b和c.我试着用alert("code"+y);alert(code+y);,但不会做.

T.J*_*der 9

那么如何让它警告code1,code2和code3?我的意思是警告值a,b和c?

最好的办法是使用一个数组,而不是离散的code1,code2code3变量:

// (I assume a, b, and c have already been declared somewhere, or that your real
// code has literals?)
var codes = [a, b, c];
var y;

for (y = 0; y < codes.length; y++) {
  alert(codes[y]);
}
Run Code Online (Sandbox Code Playgroud)

(请注意,我是从y不同的地方开始的.)

虽然这是可能做到的code1,code2,code3全局变量的事情,全局变量应该尽量避免,并且它几乎总是可能的.(也有可能与局部变量,但你必须使用eval或者其表弟的Function构造,并避免eval你应该避免只要有可能,而且几乎总是可能的.:-))

或者,如果您发现自己想要在数组不太合理的情况下执行此操作,则可以使用对象:

var codes = {
    code1: a,
    code2: b,
    code3: c
};
var y;
for (y = 1; y <= 3; ++y) {
    alert(codes["code" + y]);
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为在JavaScript中,您可以使用点表示法和文字(obj.foo),括号表示法和字符串(obj["foo"])来访问对象属性,在后一种情况下,字符串可以是任何表达式的结果.既然"code" + ycode1y1,codes["code" + y]查找财产"code1"codes(时y1).

  • 这怎么回答这个问题呢?问题是如何提醒值a,b和c:*"我的意思是这个警告值a,b和c"*这告诉OP*正确的方法来做到这一点,而不是一种只能工作的方式对于全局变量,进行不必要的字符串连接,并鼓励不良习惯. (4认同)
  • 我不明白.有没有一个downvote爆发?这是一个非常有效的答案. (2认同)

Sat*_*pal 5

使用括号表示法

 alert(window["code"+y]);
Run Code Online (Sandbox Code Playgroud)

我宁愿建议你使用像这样的数组

var code = [1, 2, 3];
for (y = 0; y < code.length; y++) {
    alert(code[y]);
}
Run Code Online (Sandbox Code Playgroud)

  • 范围,也只是明确地教javascript到新手的坏方法可能是一个原因 (3认同)
  • 这将*仅*在全球范围内工作.如果你在任何函数范围内,*这将不起作用.*虽然理论上答案是正确的,但建议OP手动使用对象,而不是依赖于`window`会好得多. (2认同)