Javascript 函数之间的Switch语句

Javascript 函数之间的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); 你不能那

我试图创建一个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);

你不能那样做<代码>开关是具有以下语法的语句:

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