谁在Unslider.js内传递虚假

时间:2015-02-06 11:56:42

标签: javascript jquery

嘿伙计们我正在调试一个名为unslider.js的插件,我遇到了一个小难题,让我详细说明,在Unslider.js中有一个看起来像这样的onject文字:

_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未定义”。

很明显它没有定义。控制台是对的。所以我回到插件并检查插件。并且遇到了一个实际上通过f in的函数。让我来描述一下我看到的内容,因为代码解释的不仅仅是文字:

/**
 *   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) {,那就是我发现的那条线是罪魁祸首,它传入的f实际上是'假的',我是console.logged并检查过。

那么我的问题是什么:那么究竟是谁传递了这个错误的价值,以及错误的价值何时何地传递。

我是Jquery和JS的新手,所以请善待并回答。

亲切的问候。

亚历山大。

1 个答案:

答案 0 :(得分:2)

来自the github repo的来源的最后一行显示它正在传入:

})(jQuery, false);

查找IIFE http://en.wikipedia.org/wiki/Immediately-invoked_function_expression以了解为何将其传递到