#330

Именованные параметры в JavaScript

Одна из самых лучших вещей, появившихся в 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.
  • При вызове метода можно использовать shorthand property names: см. как я передаю userId.

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