我刚刚浏览了unslider插件代码,我需要自定义这个插件,因为我想让我的webside carouself响应。
现在当我浏览代码时,我发现了以下内容:
o.autoplay && setTimeout(function() {
if (o.delay | 0) {
_this.play();
if (o.pause) {
el.on('mouseover mouseout', function(e) {
_this.stop();
e.type == 'mouseout' && _this.play();
});
};
};
}, o.init | 0);
我真的没有在javascript中看到过类似的内容,上面是if语句吗?
我对上述内容的解释如下:
if(o.autoplay){
setTimeout(function() {
if (o.delay | 0) {
_this.play();
if (o.pause) {
el.on('mouseover mouseout', function(e) {
_this.stop();
e.type == 'mouseout' && _this.play();
});
};
};
}, o.init | 0);
} // end if
这是我自己能做的最好的事情,现在我也尝试逐一理解代码的每个组成部分,我通过了&&和运算符,我理解setInterval函数的工作原理。
但没有在线,我看过&&运算符按照它在这里使用的方式使用。
总结我的问题,这个o.autoplay &&
在setTimeOut函数之前做了什么?这是某种设计模式吗?
编辑::
为什么o.init | 0
参数为setTimeout函数?我理解o.init被传递,因为它是一个用户定义的值发送到插件,但为什么| 0
?请解释 。
谢谢。
亚历山大。
答案 0 :(得分:1)
两个片段都做同样的事情。该插件的创建者只使用o.autoplay && setTimeout()
作为简写符号。这是一个品味问题,但简写符号的缺点是它只适用于个别陈述。您无法将其用于块(这就是代码还包含if
语句的原因)。
所以你可以这样做:
o.autoplay && setTimeout();
但是如果您需要多个语句,则需要if
块:
if (o.autoplay) {
setTimeout();
something();
something_else();
another_thing();
}