循环中的变量声明
Variable declaring within looping
我在做函数时遇到了变量问题。这只是一个愚蠢的例子。在我的代码中,我有很多变量想要在函数中使用,所以我不必为每个变量"ex1、ex2 等"一遍又一遍地编写函数。下面是我想做的非常简单的事情。首先检查"ex1",它等于声明的值,然后执行操作(真实代码中的动画)。然后对"ex2"执行相同的操作,依此类推。有没有简单的方法可以做到这一点?
<script>
var ex1 = 'frog'; //Those are not set manually. ID's in real code
var ex2 = 'pig';
var ex3 = 'horse';
var ex4 = 'bird';
var x = 0;
setInterval("call", 5000);
function call(){
x++;
if(('ex' + x) == 'frog'){
//action a
}
else if(('ex' + x) == 'pig'){
//action b
}
else if(('ex' + x) == 'horse'){
//action c
}
else if(('ex' + x) == 'bird'){
//action d
}
}
</script>
全局变量是window
对象的属性(无论如何在浏览器中)。可以使用方括号表示法访问属性,如下所示:
var ex1 = 'frog'; //Those are not set manually. ID's in real code
var ex2 = 'pig';
var ex3 = 'horse';
var ex4 = 'bird';
var x = 0;
function call(){
x++;
if(window['ex' + x] === 'frog'){
//action a
}
else if(window['ex' + x] === 'pig'){
//action b
}
else if(window['ex' + x] === 'horse'){
//action c
}
else if(window['ex' + x] === 'bird'){
//action d
}
}
setInterval(call, 5000);
但是,在这里ex
数组可能会更好:
var ex = [];
ex[1] = 'frog'; //Those are not set manually. ID's in real code
ex[2] = 'pig';
ex[3] = 'horse';
ex[4] = 'bird';
var x = 0;
function call(){
x++;
if(ex[x] === 'frog'){
//action a
}
else if(ex[x] === 'pig'){
//action b
}
else if(ex[x] === 'horse'){
//action c
}
else if(ex[x] === 'bird'){
//action d
}
}
setInterval(call, 5000);
如果要对大量字符串执行此操作,请使用 switch
语句:
var ex = [];
ex[1] = 'frog'; //Those are not set manually. ID's in real code
ex[2] = 'pig';
ex[3] = 'horse';
ex[4] = 'bird';
var x = 0;
function call(){
x++;
switch(ex[x]) {
case 'frog':
//action a
break;
case 'pig':
//action b
break;
case 'horse':
//action c
break;
case 'bird':
//action d
break;
}
}
setInterval(call, 5000);
此外,关于 ifs,更优雅的方法是拥有一个包含所有操作的对象,如下所示:
var actions = {
frog:function(){
//action a
},
pig:function(){
//action b
}
}
然后只需在对象中找到操作并在找到时调用它
var action = actions['ex' + x]
if (action) {
action();
}
相关文章:
- 使用同一对象中的其他变量声明变量
- 用||声明变量
- 使用javascript使用for循环声明变量
- JavaScript-用for循环项声明变量
- try声明变量的作用域
- 有没有一种方法可以使用函数参数的值来声明变量
- 在使用javascript再次声明变量之前,请先清除或删除该变量
- Javascript未声明变量
- 在Javascript中,我可以在声明变量之前使用它吗
- 在html文档的开头声明变量
- 按什么顺序声明变量和函数
- 如何以正确的方式在jQuery中声明变量
- 在 Angular 服务中接收函数的未声明变量
- 字典和声明变量
- 需要一些有关以以下样式声明变量的信息
- 在 jQuery 中使用常量声明变量
- 从外部文件在打字稿中声明变量得到引用错误:..未定义
- JavaScript,声明变量时混淆语法
- 在 javascript 函数和内存管理中声明变量
- Javascript 使用 if 语句声明变量