Деструктурированные параметры и аргументы функции
Более подробно о деструктуризации можно узанать на 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
testtest
112
Комментарии к статье