В широком мире JavaScript объявления var
являются областями функций, а не блоков. Они также повышены до вершины функции. Таким образом, вы могли бы написать:
var showNo = 1;
window.setInterval(function() {
var showNo; // I'm localizing it
var showNo; // and again
var nextNo; // Now I'm declaring a new variable
var nextNo; // and I just can't stop
var nextNo; // myself from declaring it again
var nextNo; // its like beating
var nextNo; // a
var nextNo; // dead horse.
console.log(showNo);
if(showNo === 1) { nextNo = 2; }
else if(showNo === 2) { nextNo = 3; }
else if(showNo === 3) { nextNo = 4; }
else if(showNo === 4) { nextNo = 5; }
else if(showNo === 5) { nextNo = 1; }
else { showNo = 1; nextNo = 2; }
showNo = nextNo;
}, 500);
Возможно, вы видите проблему сейчас.
Советы всех остальных по рефакторингу, это тоже важно. Но разберитесь в области видимости в javaScript, и эти неприятности исчезнут.