Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 30天查询中的Jquery_Javascript_Jquery - Fatal编程技术网

Javascript 30天查询中的Jquery

Javascript 30天查询中的Jquery,javascript,jquery,Javascript,Jquery,我现在正在看一个教程视频“30天学习jQuery”。 我有一个问题,为什么视频中的导师从函数返回了一个变量 代码如下: 这是在HTML文件中,它只是将事件处理程序绑定到按钮、调用函数等 (function() { slider.nav.find('button').on('click', function() { slider.setCurrent( $(this).data('dir') ); slider.transition(); });

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

代码如下:

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

(function() {

    slider.nav.find('button').on('click', function() {
        slider.setCurrent( $(this).data('dir') );
        slider.transition();
    });     
})();
这是我感兴趣的一个函数(在js文件中):

Slider.prototype.setCurrent=函数(dir){
var pos=该电流;
pos+=(~(dir=='next')| |-1);
this.current=(pos<0)?this.imgsLen-1:pos%this.imgsLen;

return pos;//如果看不到代码的其余部分,就很难知道,但是通常在对象上设置值的函数会返回一些东西,尽管这是违反直觉的,因为它们的目的是设置值,而不是获取一些东西

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

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

这在您的案例中并不是特别的,但作者可能也有类似的想法,因为他想同时做两件事:设置一个值,并获取关于该值是如何设置的一些信息。

我无法推测您的导师为什么这样做,但一种常见的做法,特别是在jQuery中,是重载函数b根据传递的参数,具有相同函数的y可以同时作为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])
,等等


让我知道这是否合理,或者如果您有任何问题:)

我猜他对它有用处。这意味着调用
setCurrent
也会告诉您它更改为哪个索引,哪个可能(潜在地)用于显示额外信息,例如文本覆盖。但是在上面的代码中,您不使用返回值,因此不返回任何内容同样有效。jQuery中的惯例是返回
this
(允许链接),但这实际上取决于您和您的环境。这行代码非常奇怪,尽管
pos+=(~~(dir=='next')| |-1)
。我很确定他说的是
pos+=(dir=='next')?-1:-1;
,但是由于语法滥用,很难说……@Dave,的确。我从来没有在js中见过
~
操作符before@Dave:
dir=='next'
返回true/false,因此
~~(dir=='next')
将真/假转换为数字形式(1/0)。
~
是按位NOT运算符。@nhahtdh,谢谢explanation@asifrc乔纳谢谢你,我想“能者/接受者”的想法可能是他想要的。
function (dir)
{
    //If dir was passed as a parameter
    if (typeof dir !== "undefined")
    {
        //Setter code
        value = dir;
    }
    //Getter (always returns value)
    return value;
}