具有默认参数的 JavaScript 函数

标签 javascript function

我目前使用以下函数来检查三个参数以查看是否有任何参数通过,这是在没有发送参数的情况下设置默认值的最佳方法吗?

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); 这将我的超时设置为 70ms,但是当涉及到设置元素时,然后使用 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/

相关文章:

javascript - 侧边栏将幻灯片切换到右侧

javascript - 在缓存应用程序(缓存 list )之前,我是否必须打开 iOS 网络应用程序?

c - c 的 displayArray 函数

python - 如何定义一个函数以便可以在对象上调用它?

javascript - 如何找到用户输入的数组的总和?

javascript - 在 HTML 中使用 PHP 文件

javascript - 我的 HTML-Javascript 连接出了什么问题?

javascript - Jquery 代码不适用于页面上的滚动动画

c++ - 在 C++ 中将函数传递给类

c - C 中的宏与函数