2017-04-10 42 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);