2015-05-14 26 views
0

我喜歡在一些JS插件中挖掘代碼。我lookad在carousel.js的代碼,看到下面的代碼行:carousel.js源代碼中的不尋常函數調用

this.cycle(true) 

我完全不知道這行代碼是幹什麼。基本上我console.log GED並且發現了內carousel.js的功能在以下順序執行:

在頁負載:

"inside on" ------------------- [1] 
"inside Plugin" --------------- [2] 
"inside Carousel" ------------- [3] 
"inside pause" ---------------- [4] 
"inside cycle" ---------------- [5] 

一旦滑塊滑動:

"inside next" ------------------- [1] 
"inside Slide" ------------------ [2] 
"inside getItemForDirection" ---- [3] 
"inside getItemIndex" ---------- [4] 
"inside pause" ----------------- [5] 
"inside getItemIndex" ---------- [6] 
"inside cycle" ----------------- [7] 

的該行代碼在pause(),line 99之內。

該行代碼似乎不是一個標誌被設置或甚至沒有參數被傳入cycle()內,因爲cycle不接受這樣的參數。那麼這行代碼究竟在做什麼?

此外,沒有這行代碼的傳送帶工作得很好。

+3

我不明白爲什麼寫錯誤_carousel_這麼困難是很困難的。 – Regent

回答

0

針對各個事件已在第55行Carousel.prototype.cycle = function (e) {中創建了原型函數。

+0

但爲什麼'true'作爲參數傳遞? –

0

這裏發生的事情:

Carousel.cycle接受一個參數(我不知道爲什麼你認爲事實並非如此),並測試這個參數的值是truthy。如果不是,則它將this.paused設置爲false。這裏的令人困惑的事情是語法:

Carousel.prototype.cycle = function (e) { 
    e || (this.paused = false) 

那二號線作爲e參數if語句,隱含地將其轉換爲布爾值,且僅當它是假的,繼續處理這臺paused第二部分屬性。

0
Carousel.prototype.cycle = function (e) { 
e || (this.paused = false) 

this.interval && clearInterval(this.interval) 

this.options.interval 
    && !this.paused 
    && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) 

return this 

第二行是訣竅。一般而言,它會觸發cycle函數,而不會將paused設置爲false