2017-04-10 91 views
2

考虑例如尽管在Javascript中有默认参数,如何传递额外参数?

var example = function(a = 10, b = 15, c) { 
return c; 
} 

所以,我想打电话给example功能与c只是价值。类似的,

example(20); // should return 20, without disturbing the values of a and b 

我该如何在JavaScript中做到这一点?

+0

http://stackoverflow.com/questions/894860/set-a-default-parameter-value-for-a- JavaScript的功能#894877 – ZiTAL

回答

1

你应该考虑在函数声明的末尾使用预定义变量:

var example = function(a, b = 10, c = 15) { 
    return a; 
} 

那么结果将是

example(20); // ->> 20 
0

你可以通过null作为论据ab当你调用例子。

var example = function(a = 10, b = 15, c) { 
return c; 
} 

console.log(example(null, null, 20)) 

或者你可以只使用object作为参数。

var example = function(obj) { 
obj.a = obj.a || 10; 
obj.b = obj.b || 15; 
return obj.c; 
} 

console.log(example({c: 20})) 
3

你想要的是可以用destructring赋值来实现,但它需要一些mods。正如我所看到的,您正在使用es2015/es6代码来设置默认值。你可能会考虑这个问题:

var example = function([a = 10, b = 15, c]) { 
 
    console.log(a,b, c); 
 
    //return c; 
 
} 
 

 
example([,,20]);

0

您可能需要使用对象,而不是:

var example = function(passed_options) { 
    $.extend(default_options, passed_options); 

    return c; 
} 

希望这有助于。

示例代码段:

var example = function(passed_options) { 
 
    $.extend({a: 10, b: 15}, passed_options); 
 

 
    return passed_options.c; 
 
} 
 

 
console.log(example({c: 20}));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

0

您可以使用参数对象来模拟命名参数:

var example = function(params) { 
    const a = params.a || 10; 
    const b = params.b || 15; 
    const c = params.c || 20; 
} 

和调用:

example({c:42}); 
0

明确地传递undefined应该做的伎俩:

var example = function(a = 10, b = 15, c) { 
 
    console.log(a, b, c); 
 
    return c; 
 
} 
 
example(11, 16, 20); 
 
example(undefined, undefined, 20);