我目前使用以下函数来检查三个参数以查看是否有任何参数通过,这是在没有发送参数的情况下设置默认值的最佳方法吗?
function setupSlideshow(t, e, s) {
e = e || '.slideshow';
s = s || '> li';
t = t || 70;
$timeout(function() {
$(e).cycle({
swipe: true,
slides: s,
fx: 'scrollHorz',
pager: '.cycle-pager',
timeout: 0
});
}, t);
}
通过使用 setupSlideshow(70);
这将我的超时设置为 70
ms,但是当涉及到设置元素时,然后使用 setupSlideshow('.new-幻灯片');
不起作用。
setupSlideshow(70);
setupSlideshow('.new-slideshow');
setupSlideshow('.new-slideshow','.slide');
最佳答案
我认为您已经忘记了参数始终必须按顺序输入...这里您的第一个参数是超时时间(以毫秒为单位),第二个参数是幻灯片元素。如果您完全省略时间,幻灯片元素将是第一个参数,因此函数将其视为您的时间。
jQuery 用来应对这一问题的一种方法是使用一个 option
参数。这包括传递一个对象供函数使用,如下所示:
function setupSlideshow(options) {
options = options || {};
e = options.e || '.slideshow';
s = options.s || '> li';
t = options.t || 70;
$timeout(function() {
$(e).cycle({
swipe: true,
slides: s,
fx: 'scrollHorz',
pager: '.cycle-pager',
timeout: 0
});
}, t);
}
setupSlideshow({t:70});
setupSlideshow({e:'.new-slideshow'});
setupSlideshow({e:'.new-slideshow',s:'.slide'});
使用这种技术对于这种用法很有用,但当可能的选项太多且没有详细记录时,也可能会成为问题制造者,因此请保持干净并添加注释:)
关于具有默认参数的 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27297675/