2015-02-06 60 views
1

嘿傢伙我正在調試一個名爲unslider.js的插件,並且我遇到了一個小難題,讓我詳細說明一下,在Unslider.js裏面有一個對象文字,如下所示:誰在內部傳遞false Unslider.js

_this.o = { 
      speed: 500,  // animation speed, false for no transition (integer or boolean) 
      delay: 3000, // delay between slides, false for no autoplay (integer or boolean) 
      init: 0,  // init delay, false for no delay (integer or boolean) 
      pause: !f,  // pause on hover (boolean) 
      loop: !f,  // infinitely looping (boolean) 
      keys: f,  // keyboard shortcuts (boolean) 
      dots: f,  // display dots pagination (boolean) 
      arrows: f,  // display prev/next arrows (boolean) 
      fluid: f,  // is it a percentage width? (boolean) 
      starting: f, // invoke before animation (function with argument) 
      complete: f, // invoke after animation (function with argument) 
      // More key value pairs 
     }; 

現在我檢查了插件了一下,看到了下面一行:

孤單隻有一條線路,使得使用該f值,見下圖:

if ((!target.length || index < 0) && o.loop == f) return; 

現在讓我詳細說明我的難處是什麼:

很明顯,在普通的java腳本中f不代表假,除非你做f = false

我做了以下的測試,以確認:

var obj = { 
        check : !f, 
        myname : "lala" 
       } 

       console.log(obj.check); 

我得到了在控制檯中的錯誤。 「f沒有定義」。

很明顯它的沒有定義。控制檯是正確的。所以我回到插件並檢查插件。並遇到了一個函數,waz實際上通過了f。讓我描述我所看到的,因爲代碼將解釋以上的話:

/** 
* Unslider by @idiot and @damirfoy 
* Contributors: 
* - @ShamoX 
* 
*/ 

(function($, f) { 

    var Unslider = function() { 
     // Object clone 
     var _ = _this = this; 

     // a couple of 100 lines of code .  

     // Set some options 
     _this.o = { 
      pause: !f,  // pause on hover (boolean) 
      loop: !f,  // infinitely looping (boolean) 
      keys: f,  // keyboard shortcuts (boolean) 
      dots: f,  // display dots pagination (boolean) 
      arrows: f,  // display prev/next arrows (boolean) 
      prev: '&larr;', // text or html inside prev button (string) 
      next: '&rarr;', // same as for prev option 
      fluid: f,  // is it a percentage width? (boolean) 
      starting: f, // invoke before animation (function with argument) 
      complete: f, // invoke after animation (function with argument) 
     }; 


      // To slide or not to slide 
      if ((!target.length || index < 0) && o.loop == f) return; 


    }; 

    // Create a jQuery plugin 
    $.fn.unslider = function(o) { 
     var len = this.length; 

     return this.each(function(index) { 

      var me = $(this), 

       instance = (new Unslider).init(me, o); 

     }); 
    }; 

    Unslider.version = "1.0.0"; 
})(jQuery, false); 

現在看看位於首位,是就在上面的代碼片斷的頂部。你看到這條線(function($, f) {,那是我發現的路線是罪魁禍首,它傳入的實際上是'假',我console.logged並檢查。

那麼,我的問題是什麼:那麼究竟是誰在傳遞那個虛假的價值,並且從那個虛擬價值何時通過。

我是新來的Jquery和JS的所有,所以請親切和回答。

親切的問候。

Alexander。

回答

2

源的最後一行,從the github repo表明,它正在傳遞:

})(jQuery, false); 

仰望IIFE http://en.wikipedia.org/wiki/Immediately-invoked_function_expression,看看它爲什麼在

+0

霍利莫莉被傳遞,是的,我會去提前閱讀,我知道IIFE的,但這個真的讓我誤入歧途。 – 2015-02-06 12:03:26

+1

沒有問題,有這麼多的JS模式,它有時會變得相當混亂 – 2015-02-06 12:06:09