Открыть меню    

Деструктурированные параметры и аргументы функции

Более подробно о деструктуризации можно узанать на dnzl.ru: Деструктуризация в JavaScript (ES6)

ES5

Раньше

function fu(options) {

    options = options || {};

  let name = options.name,
      family = options.family,
      years = options.years,
      live = options.live || 'live';
      console.log(`${family} ${name}, ${years}, live: ${live}` );
};

fu({
  name: 'Petya',
  family: 'Putina',
  years: 299,
  //live: 'no'
});
// Putina Petya, 299, live: live

Минусы: мы не можем сказать, какие параметры ожидает функция - нам придется изучить ее тело.

Пример использования деструктурированных параметров

Деструктурированные параметры ясно показывают, какие параметры переданы в функцию.

function fu2({name, family, years, live}) {
// как работает:
/* 
let {name, family, years, live} = {
                name: 'Petya',
                family: 'Putina',
                years: 299,
                live: 'no'
} 
*/
console.log(`${family} ${name}, ${years}, live: ${live}` );
};

fu2({
  name: 'Petya',
  family: 'Putina',
  years: 299,
  live: 'no'
});
// Putina Petya, 299, live: no

В случае отсутствия деструктурированного параметра внутри функции eго значение равно undefined.

Необязательный деструктурированный параметр

Деструктурированные параметры являются обязательными. Но это легко обойти:

function fu2({name, family, years, live} = {}) {
      console.log(`${family} ${name}, ${years}, live: ${live}` );
};

fu2(); // ошибки не будет  // undefined undefined, undefined, live: undefined

Параметры по умолчанию

// параметры по умолчанию:
function fu3({name = 'noname',
              family = 'nofamily',
              years = 'noyears',
              live = 'nolive'} = {}) {

      console.log(`${family} ${name}, ${years}, live: ${live}` );

};
fu3();
// nofamily noname, noyears, live: nolive
test
test
112

Комментарии к статье