Одна из самых лучших вещей, появившихся в JavaScript за последние годы — это возможность использовать destructuring прямо в определении функции. Выглядит это так:
function deleteUser({ userId, shouldKeepData = false, dir = '/tmp/' } = {}) {
console.log(
"Will delete user %d %s",
userId, shouldKeepData ? "" : "with data"
);
const user = await findUserById(userId);
// smack my bitch up
}
// вызов:
const userId = getUserId();
deleteUser({
userId,
shouldKeepData: true,
dir: '/var/data/shelf/'
});
Обрати внимание:
shouldKeepData = false
: можно указывать дефолтные значения для параметров.= {}
в конце требуется, чтобы можно было вызвать функцию без аргументов вообще: deleteUser()
. Без = {}
будет exception.userId
.Это настолько хорошо, что имеет смысл использовать практически во всех функциях и методах проекта.