Сокращенный способ проверки параметров функции

#javascript #syntax

#javascript #синтаксис

Вопрос:

В моем коде у меня есть функция, которая создает новую карту с учетом нескольких параметров. Я хочу сделать так, чтобы, если параметры не были переданы, использовались некоторые значения по умолчанию.

Почему это не сработает:

  function create(a,b,c) {
   return new Map(a,b,c || 10,1,10); // create new map using a b c as parameters
   // or 10, 1, 10 if none entered.
}

 create();
  

Предположим, что существует функция-конструктор ‘Map’, которая будет принимать и обрабатывать эти параметры.

Что я могу сделать, кроме проверки типа if / else?

Ответ №1:

Самый короткий способ, который я знаю при некоторых ограничениях, — использовать

 <var> = <var> || <defaultvalue>;
  

Итак

 Return new Map((a = a || 10), (b = b || 1), (c = c || 10));
  

Однако таким образом его трудно прочитать, и вы можете рассмотреть возможность перемещения назначений перед конструктором.

Однако ограничение заключается в том, что все ложные значения приводят к назначению значения по умолчанию, что может быть проблемой для некоторых числовых значений.

Комментарии:

1. Примечания: приведенный выше синтаксис является более общей версией для> val = val === ‘undefined’ ? Defaultvalue : значение;

2. Вероятно, это то, к чему я стремился, но вы правы, на самом деле это не совсем так читаемо. У меня есть проверка, которая гласит, что если !a, то a = 10 и т.д. Тогда спасибо за вашу помощь.

Ответ №2:

Вы можете сделать это таким образом:

 function create(a, b, c) {
     a = typeof a !== 'undefined' ? a : 10;
     b = typeof b !== 'undefined' ? b : 1;
     c = typeof c !== 'undefined' ? c : 10;
     return new Map(a, b, c);
}
  

Javascript не предлагает параметризацию значения функции по умолчанию.

Комментарии:

1. Спасибо, это похоже на то, что у меня уже было. Полезно знать, что, возможно, есть лучшие способы сделать это. Кроме того, жаль, что в JavaScript нет чего-то подобного.