Опциональные параметры в js?

124
15 марта 2019, 20:40

Мне требуется написать функцию на js. У этой функции должны быть опциональные аргументы, делаю так

const myFunc = (a, b) => {...}

Хочу реализовать следующую логику: функция универсальна, если в нее передают аргументы - использую их, если не передают, то вычисляю во время выполнения.

Но, возникла проблема, что если пытаюсь вызвать функцию ничего в нее не передавая, myFunc(), то вижу сообщение об ошибке, что не хватает параметров. А если переделываю в

const myFunc = ({a, b}) => {...}

то вижу ошибку, что не хватает одного аргумента, как это можно разрешить?

p.s. Если говорить языком аналогий с java, то как перегрузить метод?

Answer 1

const myFunc = (...args) => { 
  if (args.length == 0) { 
    args[0] = "no "; 
    args[1] = "parameters"; 
  } 
   
  return args[0] + args[1];  
}; 
 
console.log(myFunc(1, 2)); 
console.log(myFunc());

Возможно, Вам больше понравятся вычисляемые по умолчанию параметры:

var i = 0, j = 0; 
function calculateA() { 
  console.log("calculateA"); 
  return ++i; 
} 
function calculateB() { 
  console.log("calculateB"); 
  return (j += 100); 
} 
 
const myFunc = (a = calculateA(), b = calculateB()) => { 
  return a + b;  
}; 
 
console.log(myFunc()); 
console.log(myFunc(1, 2)); 
console.log(myFunc(1)); 
console.log(myFunc());

READ ALSO
Добавление файлов за несколько раз

Добавление файлов за несколько раз

Отправляю файлы через input type="file", FormDataНажимаю на input, выбираю один файл - все нормально

168
LocalStorage в произвольную локальную директорию

LocalStorage в произвольную локальную директорию

Собственно вопросМожно ли сохранить данные LocalStorage в произвольную директорию и выгрузить их оттуда после? Делаю локальную веб страницу...

177
Как работает оператор запятая? [дубликат]

Как работает оператор запятая? [дубликат]

На данный вопрос уже ответили:

163