JavaScript setInterval循环不保存变量

Rya*_*yan 3 javascript setinterval

这是我的代码:

    var showNo = 1;     
    window.setInterval(function() {
          console.log(showNo);
          if(showNo === 1) { var nextNo = 2;  }
          else if(showNo === 2) { var nextNo = 3;  }
          else if(showNo === 3) { var nextNo = 4;  }
          else if(showNo === 4) { var nextNo = 5;  }
          else if(showNo === 5) { var nextNo = 1;  }
          else { var showNo = 1; var nextNo = 2; }

          var showNo = nextNo;
          }, 500);
Run Code Online (Sandbox Code Playgroud)

我的问题是,当setInterval循环启动时,为什么showNo变量没有保持?控制台在上面的示例中显示"未定义".这可能是一个简单的问题,但我正在努力教自己查询,这让我卡住了..

任何答案都会很棒.

谢谢.

Jac*_*kin 10

您正在重新创建一个名为的新LOCAL变量showNo,它不引用调用的GLOBAL变量showNo.

使用全局变量是非常糟糕的做法,我建议将其包装在匿名函数中

我想这就是你要做的事情:

  (function() {
      var showNo = 1;     
      window.setInterval(function() {
            console.log(showNo);

            if( showNo >== 1 && showNo <== 4 ) {  
                showNo++;
            } else if( showNo === 5 ) {
                showNo = 1;  
            } else { 
                showNo = 2; 
            }

            }, 500);
    })();
Run Code Online (Sandbox Code Playgroud)