我當時正在使用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