我尝试制作这样的代码:
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);,但不会做.
那么如何让它警告code1,code2和code3?我的意思是警告值a,b和c?
最好的办法是使用一个数组,而不是离散的code1,code2和code3变量:
// (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" + y是code1当y为1,codes["code" + y]查找财产"code1"上codes(时y为1).
使用括号表示法
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)