% 符号的不同用法 JavaScript

Different uses of the % sign in JavaScript

所以我试图拆开一个简单的滑块以从中学习,但我对某些事情感到困惑,似乎找不到答案:

var slides = document.querySelectorAll('#slides .slide');
var currentSlide = 0;
var slideInterval = setInterval(nextSlide, 2000);

function nextSlide(){
    slides[currentSlide].className = 'slide';
    currentSlide = (currentSlide+1)%slides.length;
    slides[currentSlide].className = 'slide showing';
}

这是脚本中的函数:

currentSlide = (currentSlide+1)%slides.length;

这一行是 % 符号。我知道它可以用来求余数,甚至可以利用奇数和偶数,但我不知道它在这里做什么。

有解释就好了。 谢谢。

这实际上与您在其他示例中提到的运算符相同。 % 运算符是模数运算符,即它 returns 执行整数除法时的余数。

使用 % 查找偶数只是一个特定的(也是非常常见的)示例,因为任何偶数除以 2 的余数为 0。即 even_number % 2 == 0.

在这种情况下,它用于确保 currentSlide 不超过 slides.length。对于任何除法,余数的范围在 0(精确倍数时)和小于除数 1 之间,然后再次环绕(在下一个精确倍数处)。所以当到达最后一张幻灯片时(在索引 slides.length - 1 ) 下一个数字将是 slides.length 的精确倍数,因此余数将为 0,带您回到第一张幻灯片。

currentSlide = (currentSlide+1)%slides.length,将 currentSlide 递增 1,但保持小于 slides.length,每次 currentSlide 递增后会等于 slides.length,因为 [=16],它会再次变为 0 =](%) 操作。请注意,如果没有 %,您将继续增加 currentSlide,一旦它变为 >= slides.length,您将得到 undefined.