Значение по умолчанию для предыдущих параметров - PullRequest
0 голосов
/ 30 октября 2018

Это сложный вопрос. Как я могу передать значение последнему параметру, если предыдущие параметры имеют значение по умолчанию?

function sum(a=10, b=7, c){
	return a+b+c;
}

document.getElementById("result").innerHTML = sum(10);
<div id="result"></div>

Я хочу, чтобы 10 присваивалось c и было бы результатом sum из 3 значений.

Ответы [ 4 ]

0 голосов
/ 30 октября 2018

function sum(a , b = 10, c=7) {
  return a + b + c;
}
0 голосов
/ 30 октября 2018

Передайте undefined явно, чтобы получить значения по умолчанию:

function sum(a = 10, b = 7, c) {
  return a + b + c;
}

const result = sum(undefined, undefined, 10);

console.log(result);
0 голосов
/ 30 октября 2018

Вы можете объявить как: function sum(c, a=10, b=7), затем использовать: sum(10)!

function sum(c, a=10, b=7){
	return a+b+c;
}

document.getElementById("result").innerHTML = sum(10);
<div id="result"></div>
0 голосов
/ 30 октября 2018

Вы можете использовать именованные параметры (назначение деструктурирования). По сути, ваша функция получает объект, и вы по-прежнему можете устанавливать значения по умолчанию и передавать только те свойства, которые вам нужны. И при таком подходе порядок свойств не имеет значения вообще. Вы можете позвонить sum({ c: 2 }) или sum({ a: 3, c: 4}) .. или как угодно.

Дальнейшее чтение: http://2ality.com/2011/11/keyword-parameters.html

function sum({a=10, b=7, c}){
	return a+b+c;
}

document.getElementById("result").innerHTML = sum({ c: 10 });
<div id="result"></div>

Примечание относительно других ответов: IMHO, передавая ложные значения, такие как undefined или null, в качестве аргументов, делает функцию очень непоследовательной и сложной для тестирования. Вот почему я бы использовал именованные параметры, если я знаю, что некоторые поля могут не понадобиться по x причинам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...