我的功能如下:
function test(param1, param2, param3, param4, param5, param6, param7, param8){
if(param1 === undefined)
param1 = "1";
if(param2 === undefined)
param2 = "2";
etc........................
}
我想在调用函数时创建像test(param1=2, param6=7)
这样的东西然后自动所有其他的undefined
是否有办法做到这一点?
谢谢......
答案 0 :(得分:0)
你可以传递dict对象。在特殊情况下,参数甚至可以为空,但在这种情况下,请在帖子
中进行检查function test(param) {
default_values {
'a':"default_a"
}
values = default_values.concat(param);
}
test({});
test({
'b':"value_b",
});
这是非常常见的解决方案。
答案 1 :(得分:0)
在JavaScript中提供默认参数的唯一方法是检查它们是否未定义,然后按照您在问题中所述的方式分配默认值。
但如果您想明确传递未定义的值,这将无济于事。
答案 2 :(得分:0)
var test = function(param1, param2, param3){
this.param1 = param1 || "default value";
this.param2 = param2 || "default value";
this.param3 = param3 || "default value";
}
此?
答案 3 :(得分:0)
修改强>
这里的速度非常快,因为它只会改变它所需要的东西。
function test(a){
var p={p1:'1',p2:'2',p3:'3',p4:'4',p5:'5',p6:'6'}
for(var b in a){p[b]=a[b]}return p;
}
console.log(test({p1:'1000',p3:'2000'}));
这是一种方法
1.在defaulParams中定义默认参数
2.将包含params的类似对象传递给测试函数
var
defaultParams={p1:'1',p2:'2',p3:'3',p4:'4',p5:'5',p6:'6'},
test=function(a){
var myparams={}
for(var b in defaultParams){
myparams[b]=a[b]||defaultParams[b];
}
return myparams
}
console.log(test({p1:'1000',p3:'2000'}));
如果它不适合你的另一种写法。
function test(a){
var defaultParams={p1:'1',p2:'2',p3:'3',p4:'4',p5:'5',p6:'6'},myparams={};
for(var b in defaultParams){
myparams[b]=a[b]||defaultParams[b];
}
return myparams
}
所以现在要扩展这个功能:
var anewlistofparams=test({p1:'1000',p3:'2000'})
或
var ihavethisparams={p1:'1000',p3:'2000'};
var anewlistofparams=test(ihavethisparams);
错误的方式......不要这样做......坏了
var
test=function(){
var defaultParams={p1:'1',p2:'2',p3:'3',p4:'4',p5:'5',p6:'6'},myparams={};
for(var a=0,b=arguments.length;a<b;a++){
myparams['p'+(a+1)]=(arguments[a]!=''?arguments[a]:defaultParams['p'+a]);
}
return myparams
}
console.log(test('1000','','2000','','',''));
阵列方式也不好....
var
test=function(){
var defaultParams={p1:'1',p2:'2',p3:'3',p4:'4',p5:'5',p6:'6'},myparams=[];
for(var a=0,b=arguments.length;a<b;a++){
myparams[a]=(arguments[a]!=''?arguments[a]:defaultParams['p'+a]);
}
return myparams
}
console.log(test('1000','','2000','','',''));
为什么?
因为如果你有参数,你可以通过每次发送类似的东西来结束
test('','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','1','','','','','','','3','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','');
使用带有param名称的对象
test({p2589:'2589'});
答案 4 :(得分:0)
您可以将对象作为参数传递给函数;你甚至可以使用一个构造函数来为你提供一个具有默认值的对象,比如...
var DefaultArguments = function() {
this.hello = 'Hello'
this.world = 'world'
};
var myFunction = function(object) {
return object.hello + ' ' + object.world + '!';
};
var newArguments1 = new DefaultArguments();
newArguments1.hello = 'Goodbye';
alert(myFunction(newArguments1));
var newArguments2 = new DefaultArguments();
newArguments2.world = 'Mars';
alert(myFunction(newArguments2));