@SergeiB

Произвольный порядок параметров функции в js?

Не знаю, как правильно сформулировать вопрос, поэтому поясню на примере.

Предположим, есть функция с множеством параметров:
function sum(a, b, c, d) {
  b  = (typeof b  === 'undefined') ? 200 : b;
  c  = (typeof c  === 'undefined') ? 300 : c;
  d  = (typeof d  === 'undefined') ? 400 : d;

  return a + b + c + d;
}

sum(100);


Чтобы передать один из необязательных параметров, который находится в конце, приходится делать запись такого рода:
sum(100, undefined, undefined, 500);

Есть ли способ изящнее? Что-то типа
sum(100, {d: 500});
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
rockon404
@rockon404
Frontend Developer
ES5:
function foo(props) {
  var a = isNumber(props.a) ? props.a : 100;
  var b = isNumber(props.b) ? props.b : 200;
  var c = isNumber(props.c) ? props.c : 300;
  var d = isNumber(props.d) ? props.d : 400;
  
  return a + b + c + d;
}

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}


ES6:
const foo = ({ a = 100, b = 200, c = 300, d = 400 }) => a + b + c + d;


foo({ a: 0, d: 500 }); // 1000
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
function sum(a = 10, b = 200, c = 300, d = 400) {
  return a + b + c + d;
}

sum(100, null, null, 400)
sum(null, 20)
https://jsfiddle.net/sgkd1bxr/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы