我正在使用 jquery 在 javascript 中编写幻灯片时,遇到了一些正在做我的几行代码在几行中所做的事情。
问题是,我不明白它是如何工作的,所以我可以修改它。
var imgs = [
'image1.jpg',
'image2.jpg',
'image3.jpg'];
var cnt = imgs.length;
$(function() {
setInterval(Slider, 4000);
});
function Slider() {
$('#imageSlide').fadeOut("slow", function() {
$(this).attr('src', imgs[(imgs.length++) % cnt]).fadeIn("slow");
});
}
这是让我明白的那一行:
[(imgs.length++) % cnt]
我把它读成
3+1 % 3 = 1
现在每次执行时,这些代码似乎都没有修改任何变量。
cnt
将始终等于imgs.length
(3),imgs.length++
实际上并没有修改它,它只是为单次执行添加一个,对吗?
所以无论它执行多少次,imgs[1]
当我执行代码时,它总是会在所有数组对象中正常运行。
编辑:
我只是简单地添加alert(imgs.length);
并确认++
确实改变了变量,但这对我来说仍然没有意义。
第一次运行,imgs.length = 4
在 ++ 之后。4 % 3 = 1
所以它不应该运行数组对象[1]
吗[0]
?
第二轮,5 % 3 = 2
第三轮,6 % 3 = 0
等等等等..但它不应该重置。但是,如果我放 aalert(imgs.length % cnt);
它只返回 0, 1, 2 而不是重置。
为什么?