Jquery在30天内查询

时间:2013-04-17 23:51:17

标签: javascript jquery

我目前正在观看教程视频“30天学习jQuery”。 我有一个问题,为什么视频中的导师从函数中返回了一个变量

以下是代码:

这是在HTML文件中,它只是将事件处理程序绑定到按钮,调用函数等。

(function() {

    slider.nav.find('button').on('click', function() {
        slider.setCurrent( $(this).data('dir') );
        slider.transition();
    });     
})();

这是我感兴趣的一个函数(在js文件中):

Slider.prototype.setCurrent = function( dir ) {
    var pos = this.current;

    pos += ( ~~( dir === 'next' ) || -1 );
    this.current = ( pos < 0 ) ? this.imgsLen - 1 : pos % this.imgsLen;

    return pos; // <== HERE

};

我唯一想弄清楚的是为什么return pos?我尝试删除它,代码仍然有效。

这是一个错误还是有合理的逻辑呢?

简而言之,调用setCurrent函数,setCurrent返回一个值。但为什么呢?

2 个答案:

答案 0 :(得分:2)

我不能推测你的导师为什么这样做,但是一个常见的做法,特别是在jQuery中,是通过让相同的函数同时根据传递的参数设置setter和getter来重载函数。一个例子如下:

function (dir)
{
    //If dir was passed as a parameter
    if (typeof dir !== "undefined")
    {
        //Setter code
        value = dir;
    }
    //Getter (always returns value)
    return value;
}

jQuery中有很多功能使用它,例如.val.height.css('propertyName', [optionallySetValue])等。

请告诉我这是否有意义,或者如果您有任何疑问:)

答案 1 :(得分:1)

如果没有看到其余的代码,很难知道,但是通常在对象上设置值的函数会返回一些东西,即使这是违反直觉的,因为它们的目的是设置一个值,而不是获取某些东西。

您将看到的最常见的模式是返回对象本身。允许您一次将多个setter调用链接在一起:

object.setColor("red").setSize("large");

在你的情况下,这并没有特别发生,但是作者可能有类似的用途,因为他想要同时做两件事:设置一个值,并获得一些有关该值的信息已经确定了。