在carousel.js源代码中调用异常函数

时间:2015-05-14 10:06:28

标签: javascript jquery

我喜欢在一些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 个答案:

答案 0 :(得分:0)

原型函数已在第55行Carousel.prototype.cycle = function (e) {中为各个事件创建。

答案 1 :(得分:0)

以下是发生的事情:

Carousel.cycle接受一个参数(我不知道为什么你认为它没有),并测试这个参数的值是否真实。如果不是,则将this.paused设置为false。这里令人困惑的是语法:

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

第二行充当e参数的if语句,隐式将其转换为boolean,只有在为false时,继续处理设置paused属性的第二部分。

答案 2 :(得分: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