2011-02-13 95 views
1

我有许多参数和许多默认值的函数。Javascript参数:有许多默认参数

function foo(p1 ,p2, p3, p4, p5, p6){ 
    var p1 = p1 || 'default1'; 
    var p2 = p2 || 'default2'; 
    var p3 = p3 || 'default3'; 
    var p4 = p4 || 'default4'; 
    var p5 = p5 || 'default5'; 
    var p6 = p6 || 'default6'; 
} 

我怎样才能成功只能定义像P1和P6,而不是其他人呢?

我知道在Scala中,你可以做foo(p1='something1',p6='something6')

回答

5

你应该采取的对象与参数特性。

例如:

function foo(options) { 
    var p1 = options.p1 || 'default1'; 
    ... 
} 

foo({ p1: 3, p6: "abc" }); 
+0

您可以附加遍历选项对象和另一个对象来最小化代码大小。 – JCOC611 2011-02-13 03:25:46

+0

这也回答了我的问题:“如何防止用许多参数编写函数?” – 13ruce1337 2014-06-05 16:42:16

2

你可以使用一个参数是一个对象,并做jQuery的延长等的默认值:

function foo(args) { 
    jQuery.extend({ 
     p1: 'default1', 
     p2: 'default2', 
     p3: 'default3', 
     p4: 'default4', 
     p5: 'default5', 
     p6: 'default6' 
    }, args); 
} 

foo({p1: 'one', p6: 'six'}); 

在第二参数中定义的任意属性以扩展将覆盖属性在第一个参数中。