我当时正在使用jquery编写javascript中的幻灯片代码,当时我碰到几行代码正在做几行代码。jquery slide show - 为什么这段代码有效?
问题是,我不理解它是如何工作,所以我可以修改它。
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
等等等等。但也不宜过重。但是,如果我把alert(imgs.length % cnt);
它只返回0,1,2比重置。
为什么?
关于您的编辑,请参阅我的代码示例。在运行x ++时,x的值在*返回其原始值后被修改*。要返回修改后的值,可以使用++ x。 – Matchu 2010-01-19 15:06:28
另外,6%3 = 0。它不是减法运算符;它是模数 - 参见http://en.wikipedia.org/wiki/Modulo_operation – Matchu 2010-01-19 15:07:35
@Matchu是正确的,'6%3 = 0'不是'3'(将'6'除以'3'后的剩余部分是'0' ') – 2010-01-19 15:09:54