具有默认参数的JavaScript函数
我目前使用以下函数检查三个参数,以查看是否有任何传递,如果没有发送参数,这是在设置默认值时执行此操作的最佳方法吗具有默认参数的JavaScript函数,javascript,function,Javascript,Function,我目前使用以下函数检查三个参数,以查看是否有任何传递,如果没有发送参数,这是在设置默认值时执行此操作的最佳方法吗 function setupSlideshow(t, e, s) { e = e || '.slideshow'; s = s || '> li'; t = t || 70; $timeout(function() { $(e).cycle({ swipe: true, slides
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('.newslideshow')代码>不起作用
setupSlideshow(70);
setupSlideshow('.new-slideshow');
setupSlideshow('.new-slideshow','.slide');
参数必须按照定义的顺序传递给函数。所以,
setupSlideshow('.new-slideshow');
这里的参数被传递给函数中的t
变量
您要做的是:
setUpSlideshow(false, '.new-slideshow', '.slide');
这会将false
传递给t
变量,并将其更改为默认值
可选地,您可能需要考虑使用“选项”/“参数”对象:…p>
function setupSlideshow(args) {
e = e in args ? args.e : '.slideshow';
s = s in args ? args.s : '> li';
t = t in args ? args.t : 70;
...
}
args = {
e: '.new-slideshow',
s: '.slide'
};
setupSlideshow( args );
我想你已经忘记了,参数总是要按顺序输入的。。。这里,第一个参数是超时的时间(毫秒),第二个参数是slideshow元素。如果您将时间完整性设置为ommit,则slideshow元素将是第一个参数,因此函数会将其视为您的时间
jQuery使用的一种方法是使用一个选项
参数。这包括传递一个对象供函数使用,如下所示:
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'});
使用这种技术对这种用法很有用,但是如果有太多的选项,并且没有很好的文档记录,那么也可能会成为一个问题制造者,所以请保持它的整洁和注释:)就我有限的JS而言,我想我已经有了这个
当前您编写的e=e | | |'。幻灯片'
您试图将e
作为变量访问,但是,浏览器将其解释为参数。将其更改为以下内容:
变量e=e | |'。幻灯片',
s=s | |'>li',
t=t | 70;
查看以下实现。有了默认的参数“features=[]”,代码在ES6中可以变得非常简洁
ES6:新的
function setUserAccess(features = []){
return features;
};
setUserAccess(); // []
旧的
function setUserAccess(features){
features = features || [];
return features;
};
setUserAccess(); // []
具有如下默认参数的旧函数方式:
function x(param1, param2){
param1 = param1 || 'param1_default';
param2 = param2 || 'param2_default';
console.log(param1, param2);
//etc
}
更好的方法是:
function x(param1, param2){
param1 = param1 || 'param1_default';
param2 = param2 || 'param2_default';
console.log(param1, param2);
//etc
}
使用函数销毁和默认值
function x({param1='param1_default', param2='param2_default'}={}){
console.log(param1, param2);
//etc
}
x(); //returns 'param1_default', 'param2_default'
x({}); //returns 'param1_default', 'param2_default'
x({param1:'a'}); //returns 'a', 'param2_default'
x({param1:'a', param2:'b'}); //returns 'a', 'b'
这里实际发生的是,我们对参数进行解构。如果未提供参数,则使用默认参数-即={}。
在这种情况下,因为默认的空对象没有字段,所以解构将采用默认值。不,这部分是可以的。它所做的是评估“e”的值如果它是真的,它的值被分配,否则正确的部分将评估为真,然后用作分配的值。您有任何问题或评论,或者我们的答案对您有帮助吗?欢迎反馈或接受回答。