% 符号的不同用法 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.
所以我试图拆开一个简单的滑块以从中学习,但我对某些事情感到困惑,似乎找不到答案:
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.