Javascript 函数之间的Switch语句
我试图创建一个switch语句,其中每个case都在调用一个函数,setInterval计时器会自动不停地从一个case到另一个caseJavascript 函数之间的Switch语句,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我试图创建一个switch语句,其中每个case都在调用一个函数,setInterval计时器会自动不停地从一个case到另一个case var myTimer; switch(myTimer = setInterval(function() { case 1: auto_url(); break; case 2: auto_url2(); break; case 3: auto_url3(); }, 10000); 你不能那
var myTimer;
switch(myTimer = setInterval(function() {
case 1:
auto_url();
break;
case 2:
auto_url2();
break;
case 3:
auto_url3();
}, 10000);
你不能那样做<代码>开关是具有以下语法的语句:
switch (expr) {
case expr:
statements
default:
statements
}
具有零个或多个大小写
子句和零个或一个默认
子句。您的switch
表达式吞并了大小写,因此switch
没有大小写,并且您的case
子句在没有switch
的函数中是空的。你想打开什么也不清楚
重写示例最干净的方法是使用查找对象:
const lookup = {
1: auto_url1,
2: auto_url2,
3: auto_url3,
};
let which = 1;
func = lookup[which];
if (func === undefined) {
console.error("Bad which.");
} else {
let myTimer = setInterval(lookup[which], 10000);
// ...
}
对于按所需顺序反复调用函数,可以获取一个数组并存储访问的索引 对于
setInterval
回调的每次调用,都会从数组中取出一个函数并调用。为下次访问更新和调整索引
var fn1=function(){console.log('fn1');},
fn2=函数(){console.log('fn2');},
fn3=函数(){console.log('fn3');},
fns=[fn1,fn2,fn3],
指数=0,
myTimer=setInterval(函数(){
fns[index++]();
指数%=fns.长度;
}, 1500);代码>您有特殊的用例吗?我不能在switch语句中调用函数?您可以在switch表达式和语句中调用函数。您不能在包含开关大小写的开关表达式内定义函数。没有im在开关外声明函数,我只需要调用它们,就像我在上面的代码中尝试做的那样。我是否只需要将案例安排为1,2,例如默认值?我指的是匿名函数,它是您的setInterval
的回调,而不是auto\u url
函数。aa是的,我知道它不会像那样工作,只是想展示我想做的事情。在您编辑的示例中,我需要在您留下注释点的位置放置什么?或者它应该是这样工作的?我应该用我的函数替换console.log吗?auto_url1=function(){console.log('auto_url1');},就像这样?我的意思是fns=[auto_url1,auto_url2,auto_url3]
Hi Nina,我正在尝试用一个变量替换时间值,这样用户就可以在popup.html上以秒为单位输入所需的时间间隔。可能吗?我使用它来声明变量:var seconds=document.getElementById(“timeValue”).value;——其中,timeValue是表单字段YES的输入id,但由于所需的单位为毫秒,因此需要系数1000
。