嘿傢伙我正在調試一個名爲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: '←', // text or html inside prev button (string)
next: '→', // 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。
霍利莫莉被傳遞,是的,我會去提前閱讀,我知道IIFE的,但這個真的讓我誤入歧途。 – 2015-02-06 12:03:26
沒有問題,有這麼多的JS模式,它有時會變得相當混亂 – 2015-02-06 12:06:09